呀!我自己也不明白!
以下是动态加载到名为“ContentCompanyType”的ContentPane中的表单。当单击提交按钮以使用ajax提交表单时,firefox的firebug显示正在提交两次的表单。成功后第二次表单无法验证。
我将第一个重新调整页面(成功页面)设置为简单文本,因此我知道双重提交来自此页面/代码。
<script language="JavaScript">
var human = 0;
dojo.parser.parse(dojo.byId('CompanyTypeForm'));
dojo.addOnLoad(function(){
// Select the Company Type if displayed
dijit.byId('CompanyTypeSelection').set('value',String(1));
// AJAX get Company Type
var dijitCT = dijit.byId("CompanyTypeSelection");
dojo.connect(dijitCT, "onClick", function() {
human = 1;
});
dojo.connect(dijitCT, "onChange", function() {
if(human) {
var ctNum = dijitCT.get('value');
dijit.byId('ContentCompanyType').set("href","companyType/"+ctNum+"/");
}
});
// AJAX Form submission
var formName = dojo.byId("companyTypeForm");
dojo.connect(formName, "onsubmit", function(event) {
event.preventDefault();
var xhrArgs = {
form: dojo.byId("CompanyTypeForm"),
//handleAs: "text",
load: function(data) {
console.log('submitted');
dojo.byId("ContentCompanyType").innerHTML = data;
},
error: function(error) {
dojo.byId("errorMessage").innerHTML = error;
}
}
//Call the asynchronous xhrPost
dojo.byId("ContentCompanyType2").innerHTML = "Form being sent..."
var deferred = dojo.xhrPost(xhrArgs);
});
});
</script>
<!-- List of all Form Elements -->
<form action="/settings/companyType/1/" method="POST" id="CompanyTypeForm" style="padding: 5px">
<!-- Select list of all Company Types -->
<select dojoType="dijit.form.FilteringSelect" id="CompanyTypeSelection">
<option></option>
<option value="2">Regulators</option>
<option value="1">Lender2</option>
</select>
<label for="id_name">Name</label> <input name="name" required="true" value="Lender2" maxLength="60" promptMessage="" type="text" id="id_name" dojoType="dijit.form.ValidationTextBox" />
<button dojoType="dijit.form.Button" type="submit" name="submitButton" value="Submit">Update</button>
</form>
答案 0 :(得分:1)
您有一个带有提交按钮的HTML表单。这将触发HTML提交没有Dojo。您还将代码连接到onSubmit事件,该事件使用xhr运行您的逻辑。 dojo.connect不替换代码,它只是在调用该方法时触发另一个方法。所以,这两件事都发生了。按设计工作。
你可能想要在这里定义一个no-op方法,或者只是调用你的方法。