2013-09-24 55 views
1

我正在使用jq-idealforms来构建一个漂亮而简单的表单。在它我有一个无线电领域,我想从数据库得到信息后用jquery填充。 Here有一个例子(在“第2步”第2节),你可以观察jq理想和无线电领域是如何工作的。 它没有提供api来做到这一点,但如果我可以填充输入[类型='文本']元素惠特jquery,它也必须是可能的无线电领域。无法使用jquery选择或更改选择到jq-idealform radiofield

你可以看看here,jq-idealforms如何管理无线电领域。

我已经tryed使用的代码如下部分:

$(this).prop('checked', true); 
    $(this).next().addClass('checked'); 

其中$(这)是3无线电场之一,它是我想选择一个(代码is on the example休息) :

<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,第一无线电元件选择。或者,如果您在第二个无线电元素上使用“checked”,并使用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。

SOLUTION:

单选按钮的文档有误。您可以在site阅读:

需要

的字段是必需的。此过滤器仅适用于文本输入(文本, 密码,textarea)。对于选择使用排除来排除默认 选项。 对于无线电和复选框使用最小:1,这将至少需要 一个选项进行检查。

但是使用:

'ruolo_ditta' : { 
    filters: 'min', 
    data: { min: 1 }, 
} 

或联合丝毫“必要”上idealforms选项,其中“ruolo_ditta”是无线电元素的属性名的值过滤器(或仅所需的过滤器)。这个表格做出了一个错误的和真正奇怪的行为。

删除它,使用第一无线电html元素上选中了良好的工作和

$(this).prop('checked', true).trigger('change'); 

作品aspected。 j)。

谢谢, j。

+0

JQ-idealforms的新版本(版本3)被释放。它与以前的版本不兼容,所以我没有尝试过,但作者说它会修复这个错误。 – jedi

回答

0

您必须在表格上调用reload,如果你正在改变值project doc

+0

是的,我这样做。现在我已将这些信息添加到了我的原始问题中。 – jedi

0

插件抽象,从检查的实际属性检查的视觉指示,所以你必须做两件事情之一:

  • 触发与纲领性点击检查:

$(this).trigger('click');

这就好像你实际上点击了复选框。但是这也可以取消选中之前选中的框。如果这不是你想要的,使用选项2,确保它的检查

  • 确保它的检查:

$(this).prop('checked', true).trigger('change');

+0

(constainer)和点击其上的单选按钮上设置了“$ this(this).trigger('click')类的”ideal-field-focus“触发的是被一个紫色区域包围,在上添加“焦点”类,但没有被选中,第二个触发器什么也没有。 – jedi

+0

$(this).prop('checked',true).trigger('change');只有当我为第二个单选按钮开火时才做正确的事情。 (有2个收音机可供选择,并且表单创建时没有任何选择)。对于第一台收音机无法正常工作。对不起,我已经写了第一个评论,只在第一个广播。 – jedi

+0

现在我想通过html设置第一个广播。我也不能。看html输入元素我看到所有斜线在结束时不存在,但我插入它。 jedi