Javascript 验证html中强制存在的文件输入类型
我有一个包含文件上传Javascript 验证html中强制存在的文件输入类型,javascript,jquery,Javascript,Jquery,我有一个包含文件上传cfgfile <form id="mainForm" method="post" enctype="multipart/form-data" action=""> <input type="hidden" id="resulttype" value="Create"/> <input type="hidden" id="sessiontoken" name="sessiontoken" />
cfgfile
<form id="mainForm" method="post" enctype="multipart/form-data" action="">
<input type="hidden" id="resulttype" value="Create"/>
<input type="hidden" id="sessiontoken" name="sessiontoken" />
<input type="hidden" id="cfgid" name="cfgid"/>
<img id="titleImage" alt="title" src="/csm/view/images/creat_conform_title.gif" width="216" hspace="4" height="17" vspace="4"/>
<table id="popupInfo" align="center" width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>To create a new configuration,please download the CSMClient Utility from the "Download CSMClient" option.Run the utility in your environment and upload the generated output XML file.</td>
</tr>
</table>
<table id="downloadLinks" align="center" cellpadding="2" width="90%" border="0" cellspacing="0">
<tr><td>
<input name="Button1" type="button" onclick="openDownloadPage()" id="button1" value="Download CSMClient" class="btn" />
<a href="https://my-prod.informatica.com/infakb/howto/1/Pages/31738.aspx" target='_new' >How to run CSMClient</a></td></tr>
</table>
<table align="center" class="csm-table" width="90%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle" width="30%" >Name </td>
<td width="70%"><input type="text" id="cfgname" name="cfgname" tabindex="1" size="26" maxlength="64" value="" /> </td>
</tr>
<tr>
<td valign="middle" height="65">Description </td>
<td height="65">
<textarea type="text" class="dis_box" tabindex="2" id="cfgdesc" name="cfgdesc" ></textarea>
</td>
</tr>
<tr valign="middle"><tr>
<td>Type</td><td>
<select type="select" id="cfgenv" name="cfgenv" tabindex="3">
<option value="Production" >Production </option>
<option value="Development" >Development</option>
<option value="Test/QA" >Test/QA</option>
</select></td></tr>
<tr valign="middle"><td>Upload CSMClient Output File</td>
<!-- <td><input type="file" id="cfgfile" name="cfgfile" tabindex="4" class="multi" maxlength="1" accept="xml" id="filefield" ></td>-->
<td id="filetd"><input type="file" id="cfgfile" name="cfgfile" tabindex="4" /></td>
</tr>
</table>
<table align="center" border="0" cellpadding="10" cellspacing="0" width="84%">
<tr>
<td colspan="3" align="center">
<label>
<input type="submit" tabindex="5" value="Create Configuration" id="btnSummary" class="btn" onClick="" />
<!--<input type="button" tabindex="5" value="Create Configuration" id="btnSummary" class="btn" onClick="micoxUpload('postUploadInfo','Loading...','Error in upload'); return false;" />-->
<!--onClick="micoxUpload(this.form,'/csm/upload','postUploadInfo','Loading...','Error in upload'); return false;"-->
</label>
<label>
<input type="button" tabindex="6" value="Cancel" id="btnCancel" class="btn"/>
</label>
</td>
</tr>
</table>
</form>
直到这里一切都很完美。但如何验证用户是否选择了任何文件?我使用了下面的代码,但每次我都得到空的
。所以,总结一下如何验证输入文件类型,以检查用户是否输入了任何内容
if($.trim($("#cfgfile").val()) === "")
{
alert("EMPTY");
event.preventDefault();
}
重新加载页面时,您正在设置脚本中的名称,而不是ID,因此
#cfgfile
选择器与任何内容都不匹配。尝试:
var fileholder = document.createElement("input");
fileholder.name="cfgfile";
fileholder.type="file";
fileholder.id = "cfgfile";
因为您已经在使用jQuery,所以可以这样做:
var fileholder = $("<input/>" , {
type: "file",
id: "cfgfile",
name: "cfgfile"
});
$("#filetd").append(fileholder);
var fileholder=$(“”{
键入:“文件”,
id:“cfgfile”,
名称:“cfgfile”
});
$(“#filetd”)。追加(文件持有人);
我太傻了,也谢谢你,我能用一次更改调用javascript方法吗?是的,$(“#cfgfile”).change(方法)代码>
var fileholder = $("<input/>" , {
type: "file",
id: "cfgfile",
name: "cfgfile"
});
$("#filetd").append(fileholder);