asp.net自定义控件验证在Firefox或Chrome中不起作用

ASP .NET custom control validation is not working in Firefox or Chrome?

本文关键字:Chrome 不起作用 Firefox net 自定义控件 验证 asp      更新时间:2023-09-26

我使用这个链接中的日期选择器控件。下面是为ID="DatePicker1"的DatePickerControl生成的代码和ID="dateValid1"的必填字段验证器

<span id="DatePicker1" style="display:inline-block;">
    <table cellspacing="0" cellpadding="0" style="border-width:0px;border-style:None;border-collapse:collapse;white-space:nowrap;">
        <tr>
             <td valign="middle" style="border-style:none;border-width:0px;height:30px;">
                 <input name="DatePicker1$txt" type="text" id="DatePicker1_txt" OnKeyPress="return checkAllowedKey(event);" ReadOnly="true" style="width:70px;" />&nbsp
             </td>
             <td style="height:30px;"><img id="DatePicker1_img" onclick="javascript:return popUpCalendar(this, document.getElementById(&#39;DatePicker1_txt&#39;), &#39;M/d/yyyy&#39;, 1, false);" src="/WebResource.axd?d=ckpr7cUtwvCqFzFtoOMMl-4meGGqq3nc2D5C6-dKgqdMrj98KyPSR4rWmz3ep5RWWG3PiCx0mH7RhNYzT4Y5-Ms5Jyq9icgD32i9a4keUnHT0RDYjrVVQCgudwPoIHymrp3dls954_LcWKuDlvPu4g2&amp;t=635423491947401645" />
             </td>
        </tr>
    </table>
</span>
<span id="dateValid1" style="color:Red;display:none;">*required</span>

javascript代码是

<script type="text/javascript">
//<![CDATA[
var dateValid1 = document.all ? document.all["dateValid1"] : document.getElementById("dateValid1");
dateValid1.controltovalidate = "DatePicker1";
dateValid1.errormessage = "*required";
dateValid1.display = "Dynamic";
dateValid1.evaluationfunction = "RequiredFieldValidatorEvaluateIsValid";
dateValid1.initialvalue = "";
//]]>
</script>

问题是验证器在Chrome和Firefox中总是无效的,但它在IE中工作得很好。

我下载了源代码并更改了生成的html代码,使其不使用表。在此修复之后,验证工作正常。为这个问题中的示例生成的代码将是

<span id="DatePicker1" style="display:inline-block;">
   <input name="DatePicker1$txt" type="text" id="DatePicker1_txt" OnKeyPress="return checkAllowedKey(event);" ReadOnly="true" style="width:70px;" />
   <img id="DatePicker1_img" onclick="javascript:return popUpCalendar(this, document.getElementById(&#39;DatePicker1_txt&#39;), &#39;M/d/yyyy&#39;, 1, false);" src="/WebResource.axd?d=ckpr7cUtwvCqFzFtoOMMl-4meGGqq3nc2D5C6-dKgqdMrj98KyPSR4rWmz3ep5RWWG3PiCx0mH7RhNYzT4Y5-Ms5Jyq9icgD32i9a4keUnHT0RDYjrVVQCgudwPoIHymrp3dls954_LcWKuDlvPu4g2&amp;t=635423491947401645" />
</span>

查看这个项目的链接,如果它被接受,我的修复将在替代方案中