0
我试图用dojo和dijit小部件放在一起相当复杂的形式。该表单具有多个“部分”,允许用户附加现有对象(通过选择标签)或在表单中内联创建一个全新的对象。Dojo/Dijit:动态选择输入必需属性
我的输入呈现有条件的单选按钮,并通过JavaScript处理。什么我有这样的问题的基础上,有条件做需要的dijit小部件的输入是否呈现与否(其本身取决于哪个单选按钮被选中的。
我的HTML(实际上是JSP)
<div>
<input id="useExisting" type="radio" name="radio" checked value="useExisting" onclick="renderExistingInput()" /> <label for="useExisting">Use Existing</label>
<input id="new" type="radio" name="radio" value="new" onclick="renderNewInputs()"/> <label for="new">Create New</label>
</div>
<br>
<div id="newInputs">
<div class="row">
<label class="label" for="newName">Name </label>
<span class="formInput"><input type="text" id="newName" name="newName" required="true" dojoType="dijit.form.ValidationTextBox"/></span>
</div>
<!-- More inputs with required="true"-->
<br>
</div>
<div id="existingInput>
<div class="row">
<label class="label" for="existingSelect">Existing Object </label>
<span class="formInput">
<select name="existingSelect" id="existingSelect" dojoType="dijit.form.Select">
<!--JSTL tags for compiling list of options -->
</select>
</span>
</div>
</div>
随行的javascript功能:
function renderExistingInput() {
dojo.fx.wipeOut(getWipeArguments('newInputs')).play();
dojo.fx.wipeIn(getWipeArguments('existingInput')).play();
}
function renderNewInputs() {
dojo.fx.wipeOut(getWipeArguments('existingInput')).play();
dojo.fx.wipeIn(getWipeArguments('newInputs')).play();
}
function getWipeArguments(id) {
var wipeArgs = {
node : id
};
return wipeArgs;
}
用户交互的基本“流”是用户点击一个单选按钮,正确DIV呈现为一个结果,我想那么,什么是不渲染不考虑投入。我不是en非常确定如何做到这一点。是否有可能通过dojo直接操作该特定属性?还是有更好的方法来完成这一切?
http://stackoverflow.com/questions/2978570/disable-dojo-validation-on-certain-fields我指出了正确的方向,但它看起来仍然是一种笨拙的做事方式 – BuffaloBuffalo 2010-11-19 21:03:36