我想在另一个函数中放置一个jquery函数

时间:2011-12-19 13:59:04

标签: jquery textbox

我从一个文本框中获取值并将其放入另一个文本框中。传输的值是问题的持续时间,两个文本框都使用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 = "";
}

我们要做的是显示我在“#questiondurationpickerRow”文本框旁边创建的时间选择按钮,以便用户可以点击按钮并打开时间戳来打开持续时间。

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

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 = "";
}

如何在insertQuestion(form)函数中包含“questiondurationpickerRow”timepicker函数,以便它在文本框旁边显示timepicker按钮?

1 个答案:

答案 0 :(得分: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 datepicker的示例页面: http://jsfiddle.net/MarkSchultheiss/Mykd6/