jquery获取所有输入表单元素,包括radio
如果用户离开表单页面时未保存更改,我将尝试通知用户 使用下面的脚本,我成功地检索了所有输入字段,除非已更改无线电字段 我怎样才能同时获得无线电场 jQueryjquery获取所有输入表单元素,包括radio,jquery,html,Jquery,Html,如果用户离开表单页面时未保存更改,我将尝试通知用户 使用下面的脚本,我成功地检索了所有输入字段,除非已更改无线电字段 我怎样才能同时获得无线电场 jQuery $(':input').each(function() { $(this).data('initialValue', $(this).val()); }); window.onbeforeunload = function(){ var msg = 'Unsaved data presence'; var is
$(':input').each(function() {
$(this).data('initialValue', $(this).val());
});
window.onbeforeunload = function(){
var msg = 'Unsaved data presence';
var isDirty = false;
$(':input').each(function () {
if($(this).data('initialValue') != $(this).val()){
isDirty = true;
}
});
if(isDirty == true){
return msg;
}
};
HTML
...
<fieldset class="radio btn-group btn-group-yesno" id="jform_params_admin">
<input type="radio" checked="checked" value="1" name="jform[params][admin]" id="jform_params_admin0">
<input type="radio" value="0" name="jform[params][admin]" id="jform_params_admin1">
<label for="jform_params_admin1" class="btn">No</label>
</fieldset>
<input type="text" size="40" class="inputbox" value="text" id="jform_params_text" name="jform[params][admin_text]">
...
。。。
不
...
编辑
1.删除initialValue
,因为您不需要它
2.您可以使用以下未经测试的代码:
window.onbeforeunload = function(){
var msg = 'Unsaved data presence';
var isDirty = false;
$(':input').each(function () {
var $e = $(this);
if(($e.is(':checkbox') || $e.is(':radio')) && $e.prop('defaultChecked') != $e.prop('checked')) {
isDirty = true;
} else if($e.prop('defaultValue') != $e.val()) {
isDirty = true;
}
});
if(isDirty == true){
return msg;
}
};
旧的
检查输入更改是否完全错误的代码。问题是,选中复选框/radoi时,收音机和复选框的值不会改变。它们会更改选中的属性。您可以通过为复选框/收音机添加一些不同的代码来修复它:
$(':input').each(function() {
$(this).data('initialValue', $(this).val());
});
$(':radio').each(function() {
$(this).data('initialValue', $(this).checked());
});
后来:
$(':input').each(function () {
if($(this).data('initialValue') != $(this).val() || $(this).data('initialValue') != $(this).checked()){
isDirty = true;
}
});
收音机中的数据initialValue在哪里?不需要循环和设置initialValue
,dom对象已经包含相关属性(defaultValue
和defaultChecked
),我知道这些属性可以再次使用和测试。“但也许他需要向后兼容?”罗伯特,谢谢。我以后再试试。我正确地处理了这个问题,或者有更合适的方法来处理这个问题?正如@billyonecan提到的,如果可能的话,您应该使用defaultValue/defaultChecked属性。@Robert我是jQuery的新手。你能给我举个例子吗?