我正在写一个表单,每次用户更改一个以“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=""/>
答案 0 :(得分:2)
"div[class^='js-input-']"
选择器有两个问题:
div
元素而不是input
元素。您可能希望选择div
元素的输入后代。所以你应该在标签选择器和属性选择器之间放置空格。js-input
开头,而是以propertyownership
开头,因此您的选择器不会返回任何元素。您可以使用属性包含选择器:"input[class*='js-input-']"
除此之外,您的代码中存在语法错误。缺少)
来关闭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());