2016-09-09 172 views
4

在給定的代碼中,我創建了一個動態textarea,現在當我嘗試從該textarea獲取插入值時。它給我空值。從動態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> 

鑑於是我的函數從文本區域框獲得價值:

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會得到元素的列表,其中唐」沒有價值屬性。 –

回答

2

您的textarea是動態的,因此您可以使用textarea更改事件。您可以在負載使用給定的代碼,所以每當你輸入的文字對其設置OtherItemValue:

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

然後你就可以在下面的代碼中使用:

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

謝謝@Bhupendra它正在工作 – 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> 

你的函數現在看起來應該像這樣

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 
    } 

與您的代碼的問題是,getElementsByName將得到一個沒有值屬性的元素列表。你只需要獲得一個特定的元素並獲得它的價值。這個解決方案可以解決你的問題,但是如果你沒有任何其他名稱爲fname的文本區域以上的元素可以工作。

+0

textarea已經有動態ID,你不能定義它兩次。 – Developer

+0

@Developer立即檢查。 –

+0

感謝@ Rachit的幫助,但它不起作用 – Developer

0

由於您已經使用jQuery,爲什麼不用它來達到理想的結果呢?

您的代碼應該是這樣的:

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

    return true 
} 

如果你確實需要使用標準庫,@Rachit Gupta的answer應該解決的問題。

+0

這是行不通的 – Developer

+0

它確實有效,這裏是證明:https://jsfiddle.net/4ecvb0o8/1/ – mdziekon

+0

如果問題是「沒有得到''true''作爲結果」,只要刪除'' else''關鍵字 - 這是沒有必要的,並強制你的代碼在某些情況下返回''undefined''。 – mdziekon

0

使用jquery .val()方法檢索文本區域的值。 你需要初始化textarea在文檔就緒功能下清空。

$(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可以試試上面的代碼 –

+0

它是不工作@DPT – Developer

+0

@Developer我已經更新了我的答案可以試試這個。 –