<div class="row">
<label for="cv1">Upload your CV</label>
<div class="row-holder">
<input type="file" name="ctl00$main$rptJobs$ctl02$fileuploadcv" id="ctl00_main_rptJobs_ctl02_fileuploadcv" class="updatename" style="display:none;" />
<input name="ctl00$main$rptJobs$ctl02$fucv1" type="text" id="ctl00_main_rptJobs_ctl02_fucv1" class="upload" />
<label id="ctl00_main_rptJobs_ctl02_fucvlabel" class="uploadbtn" for="ctl00_main_rptJobs_ctl02_fileuploadcv">BROWSE</label>
</div>
</div>
<div class="row">
<label for="letter1">Upload letter of application</label>
<div class="row-holder">
<input type="file" name="ctl00$main$rptJobs$ctl02$fileuploadcl" id="ctl00_main_rptJobs_ctl02_fileuploadcl" class="updatename" style="display:none;" />
<input name="ctl00$main$rptJobs$ctl02$fucl1" type="text" id="ctl00_main_rptJobs_ctl02_fucl1" class="upload" />
<label id="ctl00_main_rptJobs_ctl02_fucllabel" class="uploadbtn" for="ctl00_main_rptJobs_ctl02_fileuploadcl">BROWSE</label>
</div>
</div>
<div class="row">
<div class="row-holder">
<input type="submit" name="ctl00$main$rptJobs$ctl02$btnSubmit" value="Send" id="ctl00_main_rptJobs_ctl02_btnSubmit" class="jqueryvalidate" />
</div>
</div>
让我们从HTML开始:
请注意,这是来自转发器的DOM示例。我试图验证文件上载量是否为空。这是班级&#34;上传&#34;必须包含值。 input class="upload"
具有由转发器创建的动态ID,因此只能由它的类引用。
$(document).ready(function() {
$('input.jqueryvalidate').click(function() {
var tempcv;
var tempcl;
tempcv = $(this).prev().prev().prev().find(".upload");
return false;
});
});
我已尝试.prev()
,.parent()
和.find() but always get
未定义。任何人都可以发现我的错误吗?
答案 0 :(得分:2)
您可以使用.closest()和.siblings()执行此操作:
tempcv = $(this).closest('.row').siblings().find(".upload");
答案 1 :(得分:0)
您可能想尝试使用Closest。这会向后遍历树,直到找到您正在寻找的元素。然后回到上传。
或者,尝试为每行上传创建唯一的类名。
即。类似的东西:
&lt; asp:button CssClass =&#34; submit_button_&lt;%#Eval(&#34; recordId&#34;)%&gt;&#34; RUNAT =&#34;服务器&#34;&GT;
答案 2 :(得分:0)
只是一个猜测,我建议尝试下面的代码,这将返回上传的集合。 像Mozilla的firebug这样的浏览器开发工具将在控制台中提供很多帮助,或者通过在js代码中设置断点,您可以找到详细信息。
$(document).ready(function() {
$('input.jqueryvalidate').click(function() {
var tempcv;
var tempcl;
tempcv = $('.row').find(".upload");
return false;
});
});
希望这有帮助。
答案 3 :(得分:0)
试
$(document).ready(function() {
$('input.jqueryvalidate').click(function() {
var tempcv;
var tempcl;
tempcv = $(this).closest(".row").siblings(".row").find(".upload");
tempcv.each(function(){
alert(this.id)
});
//return false;
});
});
答案 4 :(得分:0)
如果您要验证所有.upload
元素:
$(document).ready(function() {
$('input.jqueryvalidate').click(function() {
var $uploads = $('.row .upload');
var valid = true;
$uploads.each(function () {
if (!this.value) {
valid = false;
return false;
}
});
return valid;
});
});
答案 5 :(得分:0)
$(document).ready(function () {
$('input.jqueryvalidate').click(function () {
$temp = $('div.row').find(".upload");
$temp.each(function () {
// do something here
});
return false;
});
});
答案 6 :(得分:0)
你是missundersand .prev(),上一个是兄弟姐妹。您想要使用的是.parent()。
正如我在评论和AsciiSmoke中所说的那样,使用.closest()会使得它更具有可维护性,因为你更少依赖于DOM hierarchie
$(this).closest('.row').siblings('.row').find('.upload')