Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery获取所有输入表单元素,包括radio_Jquery_Html - Fatal编程技术网

jquery获取所有输入表单元素,包括radio

jquery获取所有输入表单元素,包括radio,jquery,html,Jquery,Html,如果用户离开表单页面时未保存更改,我将尝试通知用户 使用下面的脚本,我成功地检索了所有输入字段,除非已更改无线电字段 我怎样才能同时获得无线电场 jQuery $(':input').each(function() { $(this).data('initialValue', $(this).val()); }); window.onbeforeunload = function(){ var msg = 'Unsaved data presence'; var is

如果用户离开表单页面时未保存更改,我将尝试通知用户

使用下面的脚本,我成功地检索了所有输入字段,除非已更改无线电字段

我怎样才能同时获得无线电场

jQuery

$(':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的新手。你能给我举个例子吗?