2010-07-15 17 views
5
  1. Ho due caselle di testo A, B utilizzando (Html.textboxfor).
  2. TextBox 'A' è abilitato e TextBox 'B' è disabilitato.
  3. Quando si digitano i valori nella casella di testo "A" e si fa clic all'esterno (spostando il cursore dalla casella di testo), TextBox "B" deve essere popolato con somevalue.

Per esempio: il valore ingresso iam di TextBox A = "King", se il focus è persa dalla casella, Il valore nella casella di testo B dovrebbe essere "Peter", che dovrebbe essere riempito automaticamente.come richiamare un evento dopo aver perso lo stato attivo da una casella di testo, asp.net mvc

Io uso asp.net mvc.

+0

io non sono sicuro di ASP, ma l'evento si dovrebbe essere ascoltando è 'blur' – David

+1

Sembra può essere risolto con jQuery onblur(), ma ci sarebbe una logica che si desidera applicare tra il casella di testo A e contenuti visualizzati sulla casella di testo B? se è correlato con la query di dati, potrebbe essere necessario utilizzare anche una chiamata ajax nel proprio evento sfocatura jQuery –

risposta

3

si può finite dare la casella di testo un attrbiute di onblur e chiamare un metodo che riempirà il secondo testo

qualcosa di simile:

<script language="javascript"> 
     function fllB() 
     { 
      var txtB = document.getElementById("txtB"); 
      var txtA = document.getElementById("txtA"); 

      if (txtA.value == "King") 
      { 
       txtB.value = "Peter"; 
      } 
     } 
    </script> 

<input type="text" id="txtA" onblur="fillB()" /> 
<input type="text" id="txtB" /> 
0

jQuery:

<script type="text/javascript"> 
    $(function() 
    { 

    $("#txtA").change(function() 
    { 
     if(this.value == "King") 
     $("#txtB").attr("disabled", "").val("Peter"); 
    }); 

    }); 
</script> 
0

Sembra anche se vuoi che la tua seconda casella di testo sia sempre disabilitata? Se è così includere la proprietà disabile nella textboxfor:

<%: Html.TextBoxFor(x => x.XXX, new { id = "txtA" }) %>  
<%: Html.TextBoxFor(x => x.XXX, new { id = "txtB", disabled="true" }) %> 

Per il JavaScript, sto supponendo che si sta utilizzando jQuery che è incluso con MVC: (Se non si desidera cancellare txtb se il valore è rimosso dalla scatola A, quindi rimuovere l'istruzione else)

$(function() 
{ 
    $("#txtA").change(function() 
    { 
     if ($("#txtA").val().length > 0) { 

      $("#txtB").val(function() 
      { 
       // Do something to populate #txtb ex: Peter 
       var myVar = "Peter"; 

       return myVar; 
      }); 
     } 
     else 
     { 
      $("#txtB").val(""); 
     } 
    }); 
}); 
1

dal momento che si sta utilizzando ASP.NET, perchè non si è utilizzato la casella degli strumenti .NET come asp: textbox. Sarà anche più facile da mantenere.

protected void TextBox1_TextChanged(object sender, EventArgs e) 
{ 
    if (TextBox1.Text == "King") 
    { 
     TextBox2.Text = "Peter"; 
    } 
} 
1

Di seguito è riportata la funzione javascript che ho scritto per convalidare il valore di valuta "Prezzo" immesso.

<script language="javascript"> 
function validatePrice(textBoxId) { 
    var textVal = textBoxId.value; 
    var regex = /^(\$|)([1-9]\d{0,2}(\,\d{3})*|([1-9]\d*))(\.\d{2})?$/; 
    var passed = textVal.match(regex); 
    if (passed == null) { 
     alert("Enter price only. For example: 523.36 or $523.36"); 
     textBoxId.Value = ""; 
    } 
} 

Se si vuole sparare la convalida dopo aver perso un focus dalla casella di testo, quindi utilizzare “onblur” evento, che è come stessi OnLostFocus() nella maggior parte dei controlli WinForm.

<asp:TextBox ID="TextBox19" runat="server" Visible="False" Width="183px" 
       onblur="javascript:return validatePrice(this);"></asp:TextBox> 
Problemi correlati