2013-09-24 113 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