2

我有一个文本框和一个按钮。当我单击按钮时,它会在文本框中设置某些值。每当文本框的值发生更改时,我都想提交页面。

在这里查看

HTML:

<input type='text' class="set" size=50>
<input type="button" id="click" value="Click" />

查询:

$(document).ready(function () {
    $("input").change(function () {
        alert("Changed!");
    });
    $("#click").click(function () {
        $('.set').val('Why am I not getting the alert saying  - Changed! ');
    });
});

我可以在编辑文本框内容时触发更改事件。我知道当文本框失去焦点时会触发更改事件。当我通过按钮单击更改值时,情况并非如此。

我已经看到了以指定时间间隔(例如 0.1 秒)监视文本框以进行更改的答案。

有没有其他方法可以做到这一点。谢谢。

编辑 - 1 *在我的原始帖子中不清楚*。

我的要求是在输入框内容发生更改时触发事件 - 不一定是通过单击按钮。我添加了一个按钮只是为了解释问题。更改可能是由于任何原因。

所以,代码(在按钮点击功能内)

$('.set').val('Hello').change();

不会解决问题。希望这次我清楚。

请建议。

4

6 回答 6

4

change()使用函数设置值后手动触发事件。

$(document).ready(function () {
    $("input").change(function () {
        alert("Changed!");
    });
    $("#click").click(function () {
        $('.set').val('Why am I not getting the alert saying  - Changed! ');
        $('.set').change();  //Manual fire of event.
    });
});

工作示例 http://jsfiddle.net/RUdu2/

于 2013-04-16T09:56:53.710 回答
2

当您设置或更改文本输入链的值时,您需要这样做.change()

 $("#click").click(function () {
    $('.set').val('Why am I not getting the alert saying  - Changed! ').change();
  }); //-------------------------------------this one here-------------^^^^^^^^^

因此,每当您以这种方式设置输入值时,都会在单击后立即触发更改事件。


可能这会有所帮助

$("input").on('change keyup', function () {
    alert("Changed!");
});
于 2013-04-16T10:06:22.367 回答
2

以编程方式更改输入的值不会触发其更改事件。您必须在更改其值的同时使用.trigger('change')(或仅)自己执行此操作:.change()

$('.set').val('Why am I not getting the alert saying  - Changed! ').trigger('change');
于 2013-04-16T09:57:44.520 回答
0
$(document).ready(function () {
    $("input").change(function () {
        Submitform();//Function for submitting form
    });
    $("#click").click(function () {
        $('.set').val('Why am I not getting the alert saying  - Changed! ');
        Submitform();//Function for submitting form
    });
});

提交表单的功能

function Submitform(){
$("#YourformId").submit();//Submits your form
}
于 2013-04-16T10:05:34.663 回答
0

您正在以.set编程方式更改 的值,因此该事件不会触发。您必须手动触发它:

$('.set').val('Why am I not getting the alert saying  - Changed! ').change();
于 2013-04-16T09:57:56.390 回答
0

你可以实现

$('.element').val('value').change(function(){
      $("#form").submit();
}); 

http://jsfiddle.net/senstar2/CHjL5/5/

于 2014-01-29T07:41:54.103 回答