2011-12-19 105 views
0

我从一个文本框中获取值并将其放入另一个文本框中。正在传输的值是一个问题的持续时间,并且两个文本框都使用jQuery timepicker插件。现在这适用于第一个文本框,但它不适用于第二个文本框。我想在第二个文本框旁边包含一个按钮,以便用户可以打开时间选择器,以防用户想要更改第二个文本框中的持续时间。我想把一个jQuery的功能在另一个功能

所以我想包括下面这timepicker功能:

$(document).ready(function() { 
    $(function() { 
     $('#questiondurationpickerRow').trenttimepicker({ 
      timeFormat: 'hh mm ss', 
      hourGrid: 4, 
      minuteGrid: 10, 
      secondGrid: 10, 
      showOn: 'button', 
      buttonImage: "Images/clock.gif", 
      buttonImageOnly: true 
     }); 
    }); 
}); 

到下面的InsertQuestion(形式)功能:

var qnum = 1; 

function insertQuestion(form) { 
    var $tr = $("<tr></tr>"); 
    var $duration = $("<td class='duration'></td>"); 

    $('#questiondurationpicker').each(function() { 
     var $this = $(this); 
     var $durationText = 
      $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />") 
       .attr('name', $this.attr('name')) 
       .attr('value', $this.val()) 

     $duration.append($durationText); 
    }); 

    $tr.append($qid); 
    $tr.append($duration) 
    $('#qandatbl').append($tr); 

    form.numberOfQuestions.value = qnum; 

    ++qnum; 
    $("#questionNum").text(qnum); 
    form.questionText.value = ""; 
} 

什么是该做的是显示timepicker按钮我在“#questiondurationpickerRow”文本框旁边创建,以便用户可以单击该按钮并打开时间选择器以打开持续时间。

我试图把“questiondurationpickerRow”timepicker函数放在insertQuestion(表单)函数中,但它不显示按钮。下面是我的尝试:

var qnum = 1; 

function insertQuestion(form) { 
    $(document).ready(function() { 
     $(function() { 
      $('#questiondurationpickerRow').trenttimepicker({ 
       timeFormat: 'hh mm ss', 
       hourGrid: 4, 
       minuteGrid: 10, 
       secondGrid: 10, 
       showOn: 'button', 
       buttonImage: "Images/clock.gif", 
       buttonImageOnly: true 
      }); 
     }); 
    }); 

    var $tr = $("<tr></tr>"); 
    var $duration = $("<td class='duration'></td>"); 

    $('#questiondurationpicker').each(function() { 

     var $this = $(this); 
     var $durationText = 
     $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />") 
      .attr('name', $this.attr('name')) 
      .attr('value', $this.val()) 

     $duration.append($durationText); 
    }); 

    $tr.append($qid); 
    $tr.append($duration) 
    $('#qandatbl').append($tr); 

    form.numberOfQuestions.value = qnum; 

    ++qnum; 
    $("#questionNum").text(qnum); 
    form.questionText.value = ""; 
} 

我怎么能包括“questiondurationpickerRow” timepicker功能在insertQuestion()函数,以便它旁边会显示一个文本框中timepicker按钮?

+1

我不明白了一个道理包裹准备文档中准备一个文件:' $(document).ready(function(){$(function(){' – 2011-12-19 14:39:57

+0

'$(document).ready(function(){'和'$(function(){'是同样的事情。 – 2011-12-19 15:00:27

回答

0

此:

function insertQuestion(form) { 
    $(document).ready(function() { 
     $(function() { 
      $('#questiondurationpickerRow').trenttimepicker({ 

所有你需要的是:

function insertQuestion(form) { 
    $('#questiondurationpickerRow').trenttimepicker({ 

我没有看到一个定义

$tr.append($qid); 
的$ QID

一个很难去猜测什么).trenttimepicker确实。

编辑:

综观:

$('#questiondurationpicker').each(function() { 
    var $this = $(this); 
    var $durationText = 
      $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />") 
      .attr('name', $this.attr('name')) 
      .attr('value', $this.val()) 
     $duration.append($durationText); 
}); 

这更有意义(并修正语法错误)

来做为:

$this = $('#questiondurationpicker'); 
    var $durationText = $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />") 
     .attr('name', $this.attr('name')) 
     .attr('value', $this.val()); 
    $duration.append($durationText); 

重:缺少半冒号 只有一个元素可以存在给定的ID,所以不需要each()东西

最终返工:

var qnum = 1; 

function insertQuestion(form) { 
    var $tr = $("<tr></tr>"); 
    var $duration = $("<td class='duration'></td>"); 

    $this = $('#questiondurationpicker');//assume this exists 
    var $durationText = $("<input type='text' id='questiondurationpickerRow' readonly='readonly' />").attr('name', $this.attr('name')).attr('value', $this.val());//was issing semi colon 
    $duration.append($durationText); 

    $tr.append($qid);//assume $qid exists and is an element 
    $tr.append($duration) $('#qandatbl').append($tr); 
    form.numberOfQuestions.value = qnum;//another assumption 
    ++qnum; 
    $("#questionNum").text(qnum);// assume this exists 
    form.questionText.value = "";//assume this exists 

    // This has to be after it gets inserted 
    $('#questiondurationpickerRow').trenttimepicker({ 
     timeFormat: 'hh mm ss', 
     hourGrid: 4, 
     minuteGrid: 10, 
     secondGrid: 10, 
     showOn: 'button', 
     buttonImage: "Images/clock.gif", 
     buttonImageOnly: true 
    }); 
} 

下面是使用jQuery UI日期选择器一个SAMPE页: http://jsfiddle.net/MarkSchultheiss/Mykd6/

+0

它确定我有一个定义为$ qid,我只是没有包括它在我的问题中,我会尝试你在我的代码中回答 – BruceyBandit 2011-12-19 15:12:20

+0

trenttimepicker是我称之为timepicker,因为我使用了几个不同的时间选择器所以这区分时间选择器,但我知道这个功能的作品,因为它适用于其他文本框。然而,我试过你的答案,它仍然不显示按钮来显示文本框旁边的timepicker – BruceyBandit 2011-12-19 15:21:46

+0

我需要.each(function(),因为有其他文本框我想包括在代码中,但你已经修复问题,因为你声明timepicker函数必须在代码的其余部分之后才正确,因此你已经解决了这个问题。谢谢:) – BruceyBandit 2011-12-19 16:38:28