Я ищу правильный способ инициировать событие, которое сбросит мой текст ярлыка.
В моей GridView строка определена следующим образом:
<asp:TextBox ID="txtgvEmailAddress" Text = '<%# Eval("EMAIL")%>' runat="server" Width="200px" onclick="ResetMessage()"/>
Делая это, событие onclick
выделяется сообщением о том, что onclick
является недопустимым атрибутом для элемента "TextBox". Однако он отлично работает на странице. Но я хочу избавиться от этой ошибки и сделать это правильно.
GridView отображает таблицу.
Ниже приведена таблица:
<div>
<table cellspacing="0" id="MainContent_GridView1" style="border-collapse:collapse;">
<tr>
<th scope="col"><a href="javascript:__doPostBack('ctl00$MainContent$GridView1','Sort$CustID')">Customer ID</a></th><th scope="col"><a href="javascript:__doPostBack('ctl00$MainContent$GridView1','Sort$CustFirstName')">First Name</a></th><th scope="col"><a href="javascript:__doPostBack('ctl00$MainContent$GridView1','Sort$CustLastName')">Last Name</a></th><th scope="col"><a href="javascript:__doPostBack('ctl00$MainContent$GridView1','Sort$CustCity')">City</a></th><th scope="col">Email</th>
</tr><tr>
<td>
<span id="MainContent_GridView1_lblCustID_0">12</span>
</td><td>
<span id="MainContent_GridView1_lblFirstName_0">Anders</span>
</td><td>
<span id="MainContent_GridView1_lblLastName_0">Rohansen</span>
</td><td>
<span id="MainContent_GridView1_lblCity_0">Takoma Park</span>
</td><td>
<input name="ctl00$MainContent$GridView1$ctl02$txtEmail" type="text" value="[email protected]" id="MainContent_GridView1_txtEmail_0" />
<span data-val-controltovalidate="MainContent_GridView1_txtEmail_0" data-val-errormessage="Must enter Email Address" data-val-validationGroup="grpEmail" id="MainContent_GridView1_ctl00_0" data-val="true" data-val-evaluationfunction="RequiredFieldValidatorEvaluateIsValid" data-val-initialvalue="" style="visibility:hidden;">Must enter Email Address</span>
<input type="submit" name="ctl00$MainContent$GridView1$ctl02$btnUpdate" value="Update Email" onclick="return ValidateEmail(this);WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$GridView1$ctl02$btnUpdate", "", true, "grpEmail", "", false, false))" id="MainContent_GridView1_btnUpdate_0" ButtonType="Button" />
</td>
</tr><tr style="background-color:#EEEEEE;">
<td>
<span id="MainContent_GridView1_lblCustID_1">8</span>
</td><td>
<span id="MainContent_GridView1_lblFirstName_1">Deborah</span>
</td><td>
<span id="MainContent_GridView1_lblLastName_1">Damien</span>
</td><td>
<span id="MainContent_GridView1_lblCity_1">Fresno</span>
</td><td>
<input name="ctl00$MainContent$GridView1$ctl03$txtEmail" type="text" value="[email protected]" id="MainContent_GridView1_txtEmail_1" />
<span data-val-controltovalidate="MainContent_GridView1_txtEmail_1" data-val-errormessage="Must enter Email Address" data-val-validationGroup="grpEmail" id="MainContent_GridView1_ctl00_1" data-val="true" data-val-evaluationfunction="RequiredFieldValidatorEvaluateIsValid" data-val-initialvalue="" style="visibility:hidden;">Must enter Email Address</span>
<input type="submit" name="ctl00$MainContent$GridView1$ctl03$btnUpdate" value="Update Email" onclick="return ValidateEmail(this);WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$GridView1$ctl03$btnUpdate", "", true, "grpEmail", "", false, false))" id="MainContent_GridView1_btnUpdate_1" ButtonType="Button" />
</td>
</tr><tr>
<td>
<span id="MainContent_GridView1_lblCustID_2">7</span>
</td><td>
<span id="MainContent_GridView1_lblFirstName_2">Derek</span>
</td><td>
<span id="MainContent_GridView1_lblLastName_2">Chaddick</span>
</td><td>
<span id="MainContent_GridView1_lblCity_2">Fairfield</span>
</td><td>
<input name="ctl00$MainContent$GridView1$ctl04$txtEmail" type="text" value="[email protected]" id="MainContent_GridView1_txtEmail_2" />
<span data-val-controltovalidate="MainContent_GridView1_txtEmail_2" data-val-errormessage="Must enter Email Address" data-val-validationGroup="grpEmail" id="MainContent_GridView1_ctl00_2" data-val="true" data-val-evaluationfunction="RequiredFieldValidatorEvaluateIsValid" data-val-initialvalue="" style="visibility:hidden;">Must enter Email Address</span>
<input type="submit" name="ctl00$MainContent$GridView1$ctl04$btnUpdate" value="Update Email" onclick="return ValidateEmail(this);WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$MainContent$GridView1$ctl04$btnUpdate", "", true, "grpEmail", "", false, false))" id="MainContent_GridView1_btnUpdate_2" ButtonType="Button" />
</td>
</tr>
</table>
</div>
Каков наилучший способ сбросить ярлык, как только щелкнет поле электронной почты?
Немного удивительно, но это правильный способ сделать это. Вот несколько форм объяснения MSDN (на самом деле эта статья посвящена тому, что делает то же самое, но с другим контролем):
Любые пары атрибут/значение в контрольной разметке, которые не соответствуют свойствам управления, передаются в браузер как есть.
Поэтому в основном происходит то, что вы устанавливаете несуществующий атрибут элемента управления. ASP.NET не распознает этот атрибут и предупреждает об этом. Однако это не означает, что есть ошибка - как вы сказали, все работает нормально. ASP.NET просто пытается убедиться, что вы не делаете что-то неправильно. Однако этот атрибут - это то, что вы написали намеренно - вы можете оставить его, и оно будет отображаться как есть в полученном HTML.
Если это не было внутри элемента управления, связанного с данными, более предпочтительным способом сделать это будет установка коллекции Attributes
:
TextBox1.Attributes["onclick"]="ResetMessage();";
Но поскольку вы не можете получить свой контроль по ID напрямую, вы можете либо пойти с FindControl
либо установить атрибут в разметке - оба являются хорошими вариантами.
Последний небольшой комментарий - добавьте точку с запятой в конец js.
onclick
определенного в текстовом поле, и предупреждает меня. Я ищу способ связать событиеonclick
со всеми текстовыми полями электронной почты, поэтому, когда я нажимаю на него, у меня та же функциональность, что и сейчас