jquery:用于模拟实时打字的事件

时间:2011-04-24 13:54:45

标签: javascript jquery

第1部分:
  当用户“更改”输入字段时,是否可以使用任何事件来获取回调。我对变化的定义是模拟以下效果。比如,我想在用户输入输入框时更新标签。我尝试了jquery“改变”事件。它有效,但没有现场效果。更新输入字段后,我必须单击屏幕中的某个位置以更新标签。

第2部分:

好吧,如果这不是一个好主意,我可能会阻止在输入密钥上提交表单。不确定是否有一个好方法。快速搜索找到了这个答案。

<form action="" method="post" onsubmit="return false;">

尚未测试,但希望提交按钮仍然有效。

编辑:测试,并且onsubmit =“return false;”甚至阻止提交按钮。

感谢,
BSR。

5 个答案:

答案 0 :(得分:8)

这应该这样做:

input.bind('keydown keypress', function() {
    setTimeout(function() {
        label.text(input.val());
    }, 0);
});

现场演示: http://jsfiddle.net/simevidas/qTBxv/

答案 1 :(得分:4)

第1部分

您可以每keyUp更新一次,但我建议您在用户完成输入后至少等待1秒。

var timer;

var changeTxt = function(){
    // Change label text here.
};

$("#myInput").keyup(function(){
    clearTimeout(timer);
    timer = setTimeout(changeTxt, 1000);
});

第2部分

您发布的示例会停止提交表单。这是你的目标吗?

修改

我认为您正试图控制表单的提交?

$("#myForm").submit(function(){
    if(/* Your condition here */){
        return false;
        //Only if your condition is true, stop form submission
    }
});

答案 2 :(得分:0)

您是否尝试过keydown或keypress事件?

答案 3 :(得分:0)

我更喜欢表单和字段验证的组合: 在此处查找工作示例:http://jsfiddle.net/ezmilhouse/9mNc4/1/

你的HTML:

<form method="post" action="post.php">
    <input type="text" name="" value="" />
    <label>Name</label>
    <div></div>
</form>

你的js:

// prevent form from being posted empty
$('form').live('submit', function(evt){
    if ( $('input', this).val() === "" ) {
        evt.preventDefault();
        alert('Field is required!');
    }
});


// validate form field on the fly
var min = 3;
$('input').live('keyup change', function(){
    if ($(this).val().length < min) {
        $('div').html('<span class="invalid">min. 3 characters.</span>');
    } else {
        $('div').html('<span class="valid">ok!</span>');
    }
});

答案 4 :(得分:0)

您可以使用名为oninput的内容。

<form oninput="xx.value=aa.value">
   <input type="text" name="aa" value="">
   <output name="xx" for="aa"> </output>
</form>