我的表单上有三个self.map_filename
输入。每个选择都有一个零值的选项。
如果值为零,我不想发出ajax请求。如果所选选项 有值,那么我确实想要发出请求。
以下是每个<select>
的样子:
select
我知道我可以使用<form="myForm" action="" method="post">
<select name="mySelectOne">
<option value="0">Free</option>
<option value="1">$1.00</option>
<option value="2">$2.00</option>
</select>
<select name="mySelectTwo">
<option value="0">Free</option>
<option value="1">$1.00</option>
<option value="2">$2.00</option>
</select>
<select name="mySelectThree">
<option value="0">Free</option>
<option value="1">$1.00</option>
<option value="2">$2.00</option>
</select>
<button type="submit">Submit</button>
</form>
检查我的ajax请求是否完整,但我不确定我会有多少。
现在我只是使用$.when()
语句来遍历每个输入。
$.each
我试图计算我有多少输入:
$('#myForm select').each(function (key, elm) {
....
// find out how many request(s) i need to make
if(totalRequests == ??) {
// I'm all done
}
});
如果我总是提出三个请求,那就没问题。我可能只有两个......或者只有一个。在这种情况下,$('#myForm').submit(function(e){
var length = $('#myForm select').length;
var count = 1;
$('#myForm select').each(function (key, elm) {
onFormSubmit(data, function (result) {
// handle response
});
count++;
if(count == length) {
// all done.
}
});
});
var onFormSubmit = function(callback){
// ajax stuff
}
不是很可靠。
任何建议都会有所帮助!
修改
我已经更新了我的js @freakish建议:
length
答案 0 :(得分:0)
循环选择,发出请求(如有必要)并使用from selenium.webdriver.support.select import Select
option_value = "Malicious E-mail"
select_element = browser.find_element_by_xpath("//select[option[@value = '%s']]" % option_value)
select = Select(select_element)
select.select_by_value(option_value)
,如下所示:
$.when
诀窍是使用var reqs = [];
$('#myForm select').each(function (key, elm) {
// some stuff
if (condition) {
reqs.push(
$.ajax(
// the request
)
);
}
}
$.when.apply($, reqs).then(function() {
// when all done
});
使其动态化。
请注意,如果.apply
为空,那么reqs
也会触发。