2016-09-09 3 views
4

In dem angegebenen Code habe ich eine dynamische Textarea, jetzt, wenn ich versuche, einfügen Wert aus diesem Textfeld. Es gibt mir null Wert.Get Wert von Dynamic textarea

<form name="myForm"> 
<textarea name="fname" <%#!((GPNS.BusinessLayer.SpecialItems.SpecialItem)Container.DataItem).Code.Equals("OTH", StringComparison.InvariantCultureIgnoreCase) ? "style='display: none;'" : string.Empty%> id="text<%#((GPNS.BusinessLayer.SpecialItems.SpecialItem)Container.DataItem).ID%>" maxlength="50" placeholder="Enter other item details"></textarea> 
</form> 

Gegeben ist mein Funktionswert von Textfeld Feld zu bekommen:

function ValidateData() { 
      if ($("textarea").is(":visible")) { 
       //var x = document.forms["myForm"]["fname"].value; 
       var x = document.getElementsByName("fname").value; 
       if (x == null || x == "") { 
        alert("Please Enter Other Item Details"); 
        return false; 
       } 
      } 
      else return true 
     } 
+2

getElementsByName wird eine Liste von Elementen erhalten, die don‘ t haben eine Werteigenschaft. –

Antwort

2

Ihr Textfeld war dynamisch, so dass Sie textarea Änderungsereignis verwenden können. Sie können bestimmten Code auf Last verwenden, so, wenn Sie Text setzt auf OtherItemValue:

var OtherItemValue; 
$("textarea").on('input change keyup', function() { 
       if (this.value.length) { 
        OtherItemValue = this.value; 
       } else { 
        OtherItemValue = ""; 
       } 
      }); 

Und dann können Sie unter Code verwendet:

function ValidateData() { 
    if ($("textarea").is(":visible")) { 
if (OtherItemValue == null || OtherItemValue == "") { 
      alert("Please Enter Other Item Details"); 
      return false; 
     } 
    } 
    else return true 
} 
+0

Danke @Bhupendra es funktioniert – Developer

0
<form name="myForm"> 
<textarea name="fname" <%#!((GPNS.BusinessLayer.SpecialItems.SpecialItem)Container.DataItem).Code.Equals("OTH", StringComparison.InvariantCultureIgnoreCase) ? "style='display: none;'" : string.Empty%> id="text<%#((GPNS.BusinessLayer.SpecialItems.SpecialItem)Container.DataItem).ID%>" maxlength="50" placeholder="Enter other item details"></textarea> 
</form> 

Ihre Funktion jetzt wie diese mit Ihrem Code

function ValidateData() { 
     if ($("textarea").is(":visible")) { 
      //var x = document.forms["myForm"]["fname"].value; 
      var x = document.getElementsByName("fname")[0].value; 
      if (x == null || x == "") { 
       alert("Please Enter Other Item Details"); 
       return false; 
      } 
     } 
     else return true 
    } 

Das Problem aussehen sollte, ist, dass getElementsByName Ruft eine Liste von Elementen auf, die keine Werteigenschaft haben. Sie müssen nur ein bestimmtes Element erhalten und dessen Wert erhalten. Diese Lösung kann Ihr Problem lösen, wird aber funktionieren, wenn Sie kein anderes Element mit dem Namen fname über dem Textfeld haben.

+0

Textbereich haben bereits dynamische ID, Sie können es nicht zweimal definieren. – Developer

+0

@Developer überprüfen Sie jetzt. –

+0

Danke für die Hilfe @ Rachit, aber es funktioniert nicht – Developer

0

Da Sie jQuery bereits verwenden, warum verwenden Sie es nicht, um das gewünschte Ergebnis zu erzielen?

Ihr Code würde wie folgt aussehen:

function ValidateData() { 
    if ($("textarea").is(":visible")) { 
     var x = $("textarea").val(); 
     if (x == null || x == "") { 
      alert("Please Enter Other Item Details"); 
      return false; 
     } 
    } 

    return true 
} 

Wenn Sie wirklich Standard-Bibliothek verwenden müssen, @Rachit Guptas answer sollte das Problem lösen.

+0

Es funktioniert nicht – Developer

+0

Es funktioniert, und hier ist der Beweis: https://jsfiddle.net/4ecvb0o8/1/ – mdziekon

+0

Wenn das Problem "nicht als Ergebnis" "wahr" erhalten, einfach entfernen Sie '' else'' Schlüsselwort - es ist nicht notwendig und zwingt Ihren Code dazu, in einigen Fällen "undefined" zurückzugeben. – mdziekon

0

Verwenden Sie jquery .val() - Methode, um den Wert des Textbereichs abzurufen. Sie müssen Textarea initialisieren, um bei der Dokumentbereitschaftsfunktion zu leeren.

$(document).ready(function(){ 
    $("textarea[name='fname']").val("");  
}); 

    function ValidateData() { 

    if ($("textarea").is(":visible")) { 
     var x = $("textarea[name='fname']").val(); 
     if (x == null || x == "") { 
      alert("In if " + x); 
      return false; 
     } 
     else { 
       alert("In else" + x); 
     } 
    } 
    else { 
      return true 
    } 
} 
+0

@Developer kann den obigen Code versuchen –

+0

es funktioniert nicht @DPT – Developer

+0

@Developer ich habe meine Antwort aktualisiert können dies versuchen. –