每次输入值更改时触发事件

时间:2014-08-04 20:57:45

标签: javascript jquery

我正在写一个表单,每次用户更改一个以“js-input-”开头的类的输入字段时,我想要确认页面上相应字段的值(用户确认所有字段)他们输入的值)改变为新的输入值。

由于某种原因,更改事件无法触发......

这是一个非常简化的测试版本。如果需要,我可以包含更多的html,但我很确定这里的问题是jQuery,因为其他更改事件正在处理相同的输入字段。

   $(document).ready(function() {
      ...
      $("div[class^='js-input-']").change(testEvent);
      ...
  })
    function testEvent() {
    $('.js-input-price').val(Math.random();
}

 <input id="" class="propertyownership propAddress js-input-address" type="text" value="" name=""/>

3 个答案:

答案 0 :(得分:2)

"div[class^='js-input-']"选择器有两个问题:

  1. 它选择div元素而不是input元素。您可能希望选择div元素的输入后代。所以你应该在标签选择器和属性选择器之间放置空格。
  2. 类属性不以js-input开头,而是以propertyownership开头,因此您的选择器不会返回任何元素。您可以使用属性包含选择器:"input[class*='js-input-']"
  3. 除此之外,您的代码中存在语法错误。缺少)来关闭val方法。

答案 1 :(得分:0)

您需要关闭.val()

function testEvent() {
    $('.js-input-price').val(Math.random());
}

不确定这是否是修复但它会有所帮助。

答案 2 :(得分:0)

属性选择器测试整个属性字符串。所以你需要将js-input-类设置为第一个,或者更改选择器以匹配属性中的任何位置

$('input[class*="js-input-"]')

同样如评论中所述,您的元素是input,但您的选择器定位div个元素。您错过了)

中的最终.val(Math.random());