我正在使用jq-idealforms来构建一个漂亮而简单的表单。在它我有一个无线电字段,我想在从 db 获取信息后用 jquery 填充。这里有一个示例(在“step2”.. 第 2 节),您可以观看 jq-ideal 和 radio-field 是如何工作的。它没有提供一个 api 来做到这一点,但如果我可以用 jquery 填充一个 input[type='text'] 元素,那么它也必须是可能的。
您可以在这里查看jq-idealforms 如何管理无线电场。
我尝试了以下代码部分:
$(this).prop('checked', true);
$(this).next().addClass('checked');
其中 $(this) 是 3 个无线电字段之一,它是我想要选择的一个(其余代码在示例中):
<input type="radio" name="radio" style="position: absolute; left: -9999px;" autocomplete="off">
“checked”类没有放在元素 span.ideal-radio (输入的兄弟)中。我确定 DOM,因为如果我使用另一个类,如“foo”,则会添加这个类。我认为这是插件的错误,但是什么?我该如何解决?
并且在我重新加载表单时,如文档中所述: $(form).data('idealforms').reload().fresh();
Textarea 元素和输入文本类型已正确填充。
编辑:
问题更简单,如果启用了 jq-idealforms,我无法选择单选框的第一个元素,如果我不使用 jq-idealforms,则选择第一个单选元素。或者,如果您在第二个单选元素上放置“选中”并使用 jq-idealforms,它也可以工作。
<html>
<head>
<script src="js/lib/jquery-1.8.2.min.js"></script>
<link rel="stylesheet" href="css/jquery.idealforms.min.css" media="screen"/>
<script src="js/lib/jquery.idealforms.min.js"></script> <!-- removing it work -->
<head>
<body>
<form id="form-doc" method="post" action="">
<div>
<label>Tipo doc:</label>
<input type="text" name="tipo_doc" />
</div>
<div>
<label>Ruolo ditta:</label>
<label>
<input type="radio" name="ruolo_ditta" checked/>Fornitore
</label>
<label>
<input type="radio" name="ruolo_ditta" /> Cliente
</label>
</div>
<div>
<button type="submit">Salva</button>
<button id="reset" type="button">Reset</button>
</div>
</form>
<script type="text/javascript">
var options = {
onFail: function() {alert( 'fail');},
onSuccess: function() {alert( 'succes');},
inputs: {
'tipo_doc' : {
filters: 'required min max',
data: { min: 3, max: 16 },
},
'ruolo_ditta' : {
filters: 'required min',
data: { min: 1 },
},
}
};
var myform = $('#form-doc').idealforms(options).data('idealforms');
$('#reset').click(function(){
myform.reset().fresh().focusFirst();
});
myform.focusFirst();
</script>`
</body>
</html>
它不适用于 jquery-1.9.1 和 jquery-1.10.1。
解决方案:
单选按钮的文档错误。您可以在现场阅读:
必需的
该字段是必需的。此过滤器仅适用于文本输入(文本、密码、文本区域)。对于选择使用排除排除默认选项。对于收音机和复选框,请使用 min: 1 ,这将需要至少检查一个选项。
但是使用:
'ruolo_ditta' : {
filters: 'min',
data: { min: 1 },
}
或在 Idealforms 选项上组合使用“必需”过滤器(或仅需要过滤器),其中“ruolo_ditta”是单选元素的属性名称的值。表单做出错误且非常奇怪的行为。
删除它,在第一个无线电 html 元素上使用检查效果很好,并且
$(this).prop('checked', true).trigger('change');
像方面一样工作。
谢谢,j。