2017-01-10 60 views
0

當用戶訪問設置爲「只讀」時,我們需要將所有表單輸入元素設置爲readonly使所有的UI形式爲只讀/禁用?

我們在編碼中使用了基於窗口小部件的模板方法,其中的窗口部件在模板HTML中指定,並在相應的JS文件中使用。

我已經用下面的代碼在我的JS試圖postcreate方法:

var item=dojo.query("#showtech_log_title_pane"); // id of the content pane 

for (var i=0;i{ 
    dijit.byId(item[i]).set('readOnly',true); 
} 

Error : dijit by id-> undefined or null

var container = dojo.query("#showtech_log_title_pane"); 

dojo.query('input', container).forEach(
    function(inputElem){ 
    inputElem.disabled = 'disabled'; 
    } 
) 

Error: Create Element not a method

+0

你的代碼中有語法錯誤。修復這些將是一個好的開始。 ;-) * disabled *屬性是布爾值,所以'inputElem.disabled = true',但是一個字符串也可以工作,因爲它的計算結果爲true(但不是設置爲'false'時,您需要'false')。 – RobG

+0

第二個代碼塊的第一行有錯誤,您使用兩個單引號並以雙引號結尾。並在第一個塊的for循環。 – philantrovert

+0

@RobG通過這樣做,我得到以下錯誤: 解析和呈現內容時出現錯誤。 (無法解析'xwt.widget.LicenseInfoDialogue'的構造函數)。 我把代碼放在postCreate和addonLoad函數 –

回答

1

要禁用,你必須得到一個參考的窗口小部件它,並將其disabled屬性設置爲true。

你的情況,你必須通過有ID(可以肯定這是一個創建控件),然後獲取輸入的封閉部件並將其設置爲禁用

下面的工作示例所有輸入迭代:

require([ "dojo/ready", 
 
\t \t "dojo/query", 
 
      "dijit/registry", 
 
      "dojo/_base/array", 
 
\t \t "dijit/TitlePane", 
 
\t \t "dojo/domReady!"], 
 
function (ready, query, registry, array, TitlePane) { 
 
\t ready(function(){ 
 
     //get all 
 
     var inputs = dojo.query('input', "enclosing_input_div"); 
 
     array.forEach(inputs,function(input){ 
 
     //check if a it's a created widget input (all widgets have theire own id) 
 
     \t if(input.id) 
 
      if(registry.byId(input.id)) // recheck if it it has enclosing widget 
 
      registry.byId(input.id).set("disabled",true) 
 
     }) 
 
    }); 
 
});
<link href="https://ajax.googleapis.com/ajax/libs/dojo/1.8.3/dijit/themes/claro/claro.css" rel="stylesheet"/> 
 
<script> 
 
    dojoConfig= { 
 
     parseOnLoad: true, 
 
     async: true 
 
    }; 
 
</script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script> 
 

 
<body class="claro"> 
 
    <div id="enclosing_input_div"> 
 
    <div id="tp1" data-dojo-type="dijit/TitlePane" data-dojo-props="title: 'tp1'"> 
 
     <table> 
 
     <tr> 
 
      <td>TextField :</td> 
 
      <td><input data-dojo-type="dijit/form/TextBox"></td> 
 
     </tr> 
 
     <tr> 
 
      <td>NumberTextBox :</td> 
 
      <td><input id="numberTextBox" data-dojo-type="dijit/form/NumberTextBox"></td> 
 
     </tr> 
 
     <tr> 
 
      <td>Checkbox :</td> 
 
      <td><input id="checkBox" data-dojo-type="dijit/form/CheckBox"></td> 
 
     </tr> 
 
     <tr> 
 
      <td>RadioButton :</td> 
 
      <td><input id="radioButton" data-dojo-type="dijit/form/RadioButton"></td> 
 
     </tr> 
 
     </table> 
 
    </div> 
 
    </div> 
 
</body>

Here is also a fiddle

+0

通過這樣做,我得到以下錯誤:解析和呈現內容時出現錯誤。 (無法解析'xwt.widget.LicenseInfoDialogue'的構造函數)。我把代碼放在postCreate函數中,甚至在外部postcreate函數中 –

+0

因此,請發佈整個組織代碼,以便我們可以看到你將進行更改 –

+0

下面是我的程序的一部分。您可以請檢查並讓我知道在哪裏添加您的功能。 –

相關問題