0

我正在尝试使用函数在wordpress的“编辑帖子”屏幕中的输入框中将变量设置为当前文本

我目前有:

jQuery(document).on("change, keyup, click", "#input_box_1, #input_box_2, #input_box_3", functionName);

    function functionName(){
        var myvar = parseFloat(jQuery("#input_box").val());
    var myvar2 = parseFloat(jQuery("#input_box_2").val());
    var myvar3 = parseFloat(jQuery("#input_box_3").val());
      }
    });

当然只有当你保存草稿TWICE时才有效(当你第一次输入一个值时,输入框的html值在你保存之前不会改变,然后当你再次保存时,它会将变量设置为新值)。

每次用户使用我的方法在输入框中键入任何内容(使用、更改、键入和单击)时,有没有办法将变量设置为更新?

4

4 回答 4

1

肯定有!

我为你创建了这个小提琴:

http://jsfiddle.net/7HQ4W/

<p>Original Input Value:
    <br />
    <input type="text" id="origVal">
</p>
<p>Target Input Value:
    <br />
    <input type="text" id="tarVal">
</p>

$('#origVal').keyup(function () {
    $('#tarVal').val($(this).val());
});

[根据评论更新]

http://jsfiddle.net/7HQ4W/1/

我根据您的新代码示例为您调整了它。看起来怎么样?

$('#input_box_1, #input_box_2, #input_box_3').keyup(function () {
    var myVar1 = $('#input_box_1').val();
    var myVar2 = $('#input_box_2').val();
    var myVar3 = $('#input_box_3').val();
    $('#display').html("<p>myVar1 = " + myVar1 +
        "<p>myVar2 = " + myVar2 +
        "<p>myVar3 = " + myVar3);
});
于 2013-03-13T19:52:59.107 回答
0

每次输入失去焦点时,您都​​可以使用 focusout() 来捕获输入。

$("#input_box").focusout(function() {
    //Assign the value somewhee
    var myVar = $(this).val();
});

演示:http: //jsfiddle.net/8wY7Q/

于 2013-03-13T19:46:46.127 回答
0

您必须绑定到输入框,以便在用户输入字符时更新变量:
js:

$('#input_box').on('keyup', function() {
    var my_value = $(this).val();
    $('#result').html(my_value);
});

html:

<input id="input_box" />
<p id="result"></p>    

小提琴:http: //jsfiddle.net/a8jbF/

- 更新 -

新小提琴:http: //jsfiddle.net/a8jbF/1/

使用超时以便可以限制更新代码

-- 更新 2 --

您上面的代码按原样工作 - 但它会产生很多开销,因为您每次击键都会更改每个变量 - 无论它是否是正在修改的输入 -

如果您打算使用一个功能执行此操作并希望提高性能,我会添加延迟功能(在我的第二把小提琴中),然后稍微修改您的 functionName 以减少(一些)开销:

function functionName(){
    // wrap your variable set in a delay
    delay(function(){
        // actions to do after the delay is complete
        var myvar = parseFloat(jQuery("#input_box").val());
        var myvar2 = parseFloat(jQuery("#input_box_2").val());
        var myvar3 = parseFloat(jQuery("#input_box_3").val());
    }, 1000);
  }
于 2013-03-13T19:49:41.577 回答
0

处理事件blurfocusout在您的 $('#inputBox')

于 2013-03-13T19:51:25.540 回答