JQuery 无法获取动态添加字段的值
JQuery can't get value of dynamically added fields
我有一个隐藏的div,形式很简单:
<div id="mb_clookup" style="display: none;">
<strong><font color="#0066CC">Search for existing customers</font></strong><br /><br />
<font color="#FFF">
Postcode: <input type="text" name="cl_zipcode" id="cl_zipcode" />
<span id="cl_search">Search</span>
</font>
</div>
当用户单击页面上的按钮时,将显示此信息。用户输入邮政编码,单击搜索并调用 JSON 查询。我已经设法使搜索按钮与 .live() 一起使用,但我无法获取输入字段的值。这是代码:
$(document).ready(function(){
$(document).on( "click", "#cl_search", function() {
var pc = $('#cl_zipcode').val();
if(pc === '') {
alert('Please type in a post code first.');
}
else {
// JSON
}
});
});
PC变量为空。我试过了:$(this).find('#cl_zipcode').val()
这会产生未定义。请指教。
您可以使用以下内容
var pc= $("#mb_clookup").find('#cl_zipcode').val();
或
var pc= $("#mb_clookup :input").val();
检查小提琴
关于$(this).find('#cl_zipcode').val()
输入元素位于单击的范围旁边,因此您的查找将从范围向下搜索(除了文本之外,它不包含任何内容)。
在找到它之前,您需要先向上移动 DOM。
$(this).parent().find('#cl_zipcode').val()
请注意,由于 ID 是唯一的,因此您的原始代码实际上很好(只要您只添加了其中一个):http://jsfiddle.net/TrueBlueAussie/djqfharu/
如果您加载了多个元素(您提到动态添加字段),则需要切换到类来标识元素。
例如
$(document).ready(function(){
$(document).on( "click", ".cl_search", function() {
var pc = $(this).parent().find('.cl_zipcode').val()
if(pc === '') {
alert('Please type in a post code first.');
}
else {
// JSON
}
});
});
这是因为浏览器保留了 ID 与 DOM 元素的快速查找字典,因此每个 ID 只保留一个条目。这样做的结果是,jQuery只能找到第一个匹配的元素来搜索重复的ID。解决方案是切换到使用类和基于类的搜索。
我强烈建议您发布其余代码,因为显示的部分不是孤立的问题。
我弄错了你的HTML代码。Becouse 标签未使用标签 标签不支持HTML5。
更改此内容
<div id="mb_clookup" style="display:block;">
<strong><font color="#0066CC">Search for existing customers</font></strong><br /><br />
<span style="color="#FFF">
Postcode: <input type="text" name="cl_zipcode" id="cl_zipcode" />
<span id="cl_search">Search</span>
</span>
</div>
祝你好运
您的代码工作正常,我通过删除 show none 属性在jsfiddle
中检查了它。你可以在这里查看
.HTML
<div id="mb_clookup">
<strong><font color="#0066CC">Search for existing customers</font></strong><br /><br />
<font color="#FFF">
Postcode: <input type="text" name="cl_zipcode" id="cl_zipcode" />
<button id="cl_search">Search</button>
</font>
</div>
.JS
$(document).ready(function(){
$(document).on( "click", "#cl_search", function() {
var pc = $('#cl_zipcode').val();
if(pc === '') {
alert('Please type in a post code first.');
}
else {
alert(pc);
}
});
});
相关文章:
- 使用单个文本框向多个字段添加严格搜索
- WooCommerce-根据自定义字段添加费用
- 向使用jQuery加载DOM后添加的字段添加不受限制的文本输入DatePickers
- j查询检查复选框是否被选中,然后向输入字段添加值
- 使用 javascript 将各种输入字段添加到一起
- 使用 jQuery 将字段添加到表中的 HTML 表单中
- 如何从动态输入字段添加数字
- Extjs 3.3动态地将字段添加到表单中,并设置它们的标签宽度
- JQuery:如何检查复选框是否被选中并向字段添加属性
- "未捕获的类型错误:未定义的不是函数“;当向输入字段添加值时
- Bootstrap typeahead为隐藏字段添加值
- 使用chrome扩展(HTML、CSS、JavaScript)向输入字段添加可点击的图标/按钮
- 正在向输入字段添加自定义验证
- 使用javascript向输入字段添加值
- 如何将自定义字段添加到Json结果-ASP.NET MVC
- 向选定的弹出字段添加逗号
- Accounts.onCreateUser 未将字段添加到 Meteor 的用户集合中
- 如何将自定义字段添加到 dhtmlxScheduler
- 根据 JavaScript 中的选中复选框将字段添加到页面
- 如何从开始日期中的单独字段添加天数/周,以在日期选择器中获取结束日期