2014-03-06 4 views
1

У меня есть четыре текстовых поля, и мне нужно проверить нулевые значения. Если какое-либо из значений текстового поля имеет нулевые значения, то при нажатии кнопки мне нужно показать предупреждение, например «Пожалуйста, введите значения».Alert on button click

Этот код будет отключен, если значение текстового поля пуст.

ASPX:

<tr style="height: 40px;"> 
     <td> 
      <asp:textbox id="txt1" runat="server"> 
      </asp:textbox> 
     </td> 
     <td> 
      <asp:textbox id="txt2" runat="server"> 
      </asp:textbox> 
     </td> 
     <td> 
      <asp:textbox id="txt3" runat="server"> 
      </asp:textbox> 
     </td> 
</tr> 

<tr> 
<td> 
<asp:button id="Button1" runat="server" text="Add" cssclass="button" width="50px" 
onclick="Button1_Click" /></td> 
</tr> 

CS:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    if (String.IsNullOrWhiteSpace(txt1.Text) || String.IsNullOrWhiteSpace(txt2.Text) || String.IsNullOrWhiteSpace(txt3.Text)) 
    { 
     string message = "Textbox can be empty, please enter a value"; 
     string script = String.Format("alert('{0}');", message); 
     this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "msgbox", script, true); 
    } 

    if (txt1.Text != "" && txt2.Text != "" && txt3.Text != "" && ddlcategory.Text != "--Select--") 
    { 
     DataSet ds = new DataSet(); 
     using (SqlConnection connection = new SqlConnection(str)) 
     { 
      SqlCommand command = new SqlCommand(); 
      command.Connection = connection; 
      string strquery = "select * from product where code='Metal' and Id='" + txt1.Text + "'"; 
      SqlCommand cmd = new SqlCommand(strquery, connection); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      da.Fill(ds); 
     } 
     if (ds.Tables[0].Rows.Count > 0) 
     { 
      ClientScript.RegisterStartupScript(this.GetType(),"Key", "<script type='text/javascript'>window.onload = function(){alert('Product Already Exists.');return false;}</script>");       
     } 
     else 
     { 
      SqlConnection conn = new SqlConnection(str); 
      conn.Open(); 
      SqlCommand cmd = new SqlCommand("Products", conn); 
      cmd.Parameters.Add("@id", SqlDbType.VarChar, 30).Value = txt1.Text; 
      cmd.Parameters.Add("@name", SqlDbType.VarChar, 50).Value = txt2.Text; 
      cmd.Parameters.Add("@email", SqlDbType.VarChar, 30).Value = txt3.Text; 
      cmd.Parameters.Add("@category", SqlDbType.VarChar, 20).Value = ddlcategory.Text; 
      cmd.Parameters.Add("@id", SqlDbType.Int).Value = 1; 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.ExecuteNonQuery(); 
      conn.Close(); 
      conn.Dispose(); 
      ClientScript.RegisterStartupScript(this.GetType(), "Key", "<script type='text/javascript'>window.onload = function(){alert('Product Created Successfully.');return false;}</script>");    
     } 
    }    
} 

Любой предложить мне на это.

+1

Вы не можете использовать эту серверную часть, вы должны использовать код на стороне клиента. –

+0

@ShadowWizard Почему сервер не работает? –

+0

ОК, а не «не могу», но «лучше не». Серверная сторона означает, что вы выполняете полную перезагрузку страницы, в то время как вы можете обнаружить пустые значения перед самим представлением формы. См. [Этот ответ] (http://stackoverflow.com/a/22221010/447356), вот что я имею в виду. –

ответ

1

пример:

if (String.IsNullOrWhiteSpace(txt1.Text) || String.IsNullOrWhiteSpace(txt2.Text) || String.IsNullOrWhiteSpace(txt3.Text) || String.IsNullOrWhiteSpace(txt4.Text)) 
{ 
    string message = "Please enter values"; 
    string script = String.Format("alert('{0}');", message); 
    this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "msgbox", script, true); 
    return; 
} 
+0

Damith - Как я могу проверить пробелы в этом коде? Значит, когда я нажимаю клавишу пробела внутри текстового поля и нажимаю кнопку, которую мне нужно проверить. Просто потому, что текстовое поле будет иметь только пробелы. –

+0

Damith - предупреждение приходит отлично, но когда я нажимаю ok в окне предупреждения, элемент добавляется. –

+0

какие предметы вы говорите? – Damith

1

Вы можете сделать это в стороне клиента с кодом JavaScript

function verifyValues() 
{ 
    var txtBox1,txtBox2,txtBox3,txtBox4; 
    txtBox1=document.getElementByID("<%= myTextBox1.ClientID %>"): 
    txtBox2=document.getElementByID("<%= myTextBox2.ClientID %>"): 
    txtBox3=document.getElementByID("<%= myTextBox3.ClientID %>"): 
    txtBox4=document.getElementByID("<%= myTextBox4.ClientID %>"): 

    if(txtBox1.value=="" || txtBox2.value==""||txtBox3.value=="" 
         || txtBox4.value=="") 
    { 
     alert("Please enter any one of the value"); 
     return false; 
    } 
    return true; 
} 

Затем сервер боковой разметка должна вызвать функцию яваскрипта с return заявлением

<asp:Button ID="btnSubmit" runat="server" OnClientClick="return verifyValues();" 
     Text="Click" /> 

Если вы хотите двойную проверку как клиент, так и на стороне сервера , пожалуйста, укажите @Damith ответ на стороне сервера.

+0

Я использовал этот скрипт, и предупреждение не появляется, когда я оставил столбец пустым и нажатием кнопки я смог добавить запрос. –

+0

Что вы подразумеваете под 'когда я покинул столбец пустым и нажатием кнопки я смог добавить запрос'? –

+0

извините его текстовое поле. Я не вводил никаких значений в текстовое поле, и когда я нажал кнопку, я НЕ ПОЛУЧИЛ ЛЮБЫЕ ПРЕДУПРЕЖДЕНИЯ ДЛЯ НУЛЬНЫХ ЗНАЧЕНИЙ. Я имею в виду, когда я даю пробелы, которые они добавляют, и также мне нужно проверить это. –

0

Я использовал бы string.IsNullOrEmpty() вместо этого и сделал ниже.

if (string.IsNullOrEmpty(txt1.Text)) { 
    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), 
      "err_msg", 
      "alert('Please enter values!)');", 
      true); 
} 
0

попробовать это вместо того, чтобы ваш код, и следует добавить return false после предупредительного сообщения показали

if (string.IsNullOrEmpty(txt1.Text) ||string.IsNullOrEmpty(txt2.Text) || string.IsNullOrEmpty(txt3.Text) || string.IsNullOrEmpty(txt4.Text)) 
    { 
     string script = "<script type=\"text/javascript\">alert('Please enter values');</script>"; 
     ClientScript.RegisterClientScriptBlock(this.GetType(), "Alert", script); 
     Button1.Enabled = false; 
     return false; 
    } 
    else 
    { 
     Button1.Enabled = true; 
    } 


} 

или

if (string.IsNullOrEmpty(txt1.Text) ||string.IsNullOrEmpty(txt2.Text) || string.IsNullOrEmpty(txt3.Text) || string.IsNullOrEmpty(txt4.Text)) 
     { 
     string script = "alert('Please enter values');"; 
     ClientScript.RegisterClientScriptBlock(this.GetType(), "Alert", script, true); 
      Button1.Enabled = false; 
      return false; 
     } 
     else 
     { 
      Button1.Enabled = true; 
     } 


    } 
0

Try Это один

if (txt1.Text == "" || txt2.Text == "" || txt3.Text == "" || txt4.Text == "") 
     { 
      ScriptManager.RegisterStartupScript(this.Page, typeof(Page), "scrip1", "alert('Enter All fields');", true); 
     Button1.Enabled = false; 
     } 
     else 
     { 
      Button1.Enabled = true; 
     } 
0

Применить Требуется Поле Validat на всех текстовых ящиках и указать имя группы для всех текстовых полей, а для кнопки, по щелчку которой должна выполняться валидация, имя группы должно быть одинаковым для всех текстовых полей и для кнопки.

0

вы должны сделать эту проверку на стороне клиента, которая дает и улучшенную производительность

, как следовать

function verifyValues() 
{ 
    var txtBox1,txtBox2,txtBox3,txtBox4; 
    txtBox1=document.getElementByID("txt2"): 
    txtBox2=document.getElementByID("txt2"): 
    txtBox3=document.getElementByID("txt2"): 
    txtBox4=document.getElementByID("txt2"): 

    if(txtBox1.value=="" || txtBox2.value==""||txtBox3.value=="" 
         || txtBox4.value=="") 
    { 
     alert("Please enter any one of the value"); 
     return false; 
    } 
    return true; 
}