【问题标题】:AJAX .val() or .text() does not work with textarea?AJAX .val() 或 .text() 不适用于 textarea?
【发布时间】:2020-04-01 01:18:51
【问题描述】:

我正在尝试使用 AJAX 请求将 textarea 数据发送到 google 表单,但 .val() 似乎不适用于 textarea。我该如何解决这个问题?

我希望允许人们围绕一段信息输入内容,因此此时使用 textarea 至关重要。

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="http://fonts.googleapis.com/css?family=Dosis|Ubuntu+Mono|Quicksand|Josefin+Sans|Montserrat|Francois+One|Marvel" rel="stylesheet" type="text/css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


</head>

<body style="background:white; font-family:Montserrat;">

<h1>Feedback/Review</h1>
<p>The Insane Ink Board would be happy to hear from you about our services! Leave feedback or a review using the form below.</p>

<form id="form" target="_self" onsubmit="return postToGoogle();" action="" autocomplete="off">
  <label id = "namelabel">Name:</label><label id = "emaillabel">Email: </label><br>
<input id="nameField" name="entry.1803640717" placeholder="First / Last Name" type="text" required>
<input id="emailField" name="entry.63463603" placeholder="Enter Your Email" type="email" required><br><br>
<label id = "relationlabel">Relation:</label><label id = "choicelabel">Why are you contacting us?</label><br>
<input id="mobField" name="entry.1793553898" placeholder="Relation to Insane Ink (EX: customer)" type="text" required> 
<select id="cinema" name="entry.26162353" placeholder="Select Cinema" required>
<option value="">Choose an Option</option>
<option value="">Question about Prices</option>
<option value="">Had Issues With The Process</option>
<option value="">Feedback for great work</option>
<option value="">Other Option/Not Listed</option>
</select><br><br>

<label>Comment Here:</label>
<textarea id="explainfield" name="entry.1396765295" rows = "10" cols = "110" required></textarea> 
<button id="send" type="submit" class="common_btn">Submit Form</button>
</form>

<h3 id="success-msg" style="text-align: center !important; margin-top:190px !important; display:none; color:#fff"> Your Request has been recieved!</h3>



<style>
body {font-family: Arial, Helvetica, sans-serif;}
form {border: 3px solid #f1f1f1; font-family: QuickSand;}

input[type=text], input[type=email], select {
  width: 49%;
  font-size:20px;
  padding: 12px 20px;
  margin: 8px 0;
  display: inline-block;
  border: 1px solid #ccc;
  box-sizing: border-box;
}

button {
  background-color: maroon;
  color: white;
  padding: 14px 20px;
  margin: 8px 0;
  border: none;
  cursor: pointer;
  width: 100%;
}

button:hover {
  opacity: 0.4;
}

.cancelbtn {
  width: auto;
  padding: 10px 18px;
  background-color: #f44336;
}

.imgcontainer {
  text-align: center;
  margin: 24px 0 12px 0;
}

img.avatar {
  width: 20%;
  border-radius: 50%;
}

.container {
  padding: 16px;
}

span.psw {
  float: right;
  padding-top: 16px;
}

#namelabel, #relationlabel {
    margin-right: 30px;

}

#emaillabel {
    margin-left: 385px;

}
#choicelabel {
    margin-left: 340px;

}

/* Change styles for span and cancel button on extra small screens */
@media screen and (max-width: 300px) {
  span.psw {
     display: block;
     float: none;
  }
  .cancelbtn {
     width: 100%;
  }
}
</style>



<script>
function postToGoogle() {
                var field1 = $("#nameField").val();
                var field2 = $("#emailField").val();
                var field3 = $("#mobField").val();
                var field4 = $("#cinema option:selected").text();
                var field5 = $("#emailfield").text();

                if(field1 == ""){
                    alert('Please Fill Your Name');
                    document.getElementById("nameField").focus();
                    return false;
                }
                if(field2 == ""){
                    alert('Please Fill Your Email');
                    document.getElementById("emailField").focus();
                    return false;
                }
                if(field3 == "" || field3.length < 1){
                    alert('Please Fill Your Mobile Number');
                    document.getElementById("mobField").focus();
                    return false;
                }
        if (field5 == "" || field5.length < 1 {
          alert('Please comment down below');
          document.getElementById("explainfield").focus();
          return false;
        }




                $.ajax({
                    url: "https://docs.google.com/forms/d/e/1FAIpQLSdTNZewdXbyY51ueD9OEBi4Cca3JkVT1p4CykMSPyfzRpWHyQ/formResponse?",
                    data: {"entry.1803640717": field1, "entry.63463603": field2, "entry.1793553898": field3, "entry.26162353": field4, "entry.1396765295": field5},
                    type: "POST",
                    dataType: "xml",
                    success: function(d)
                    {
                    },
                    error: function(x, y, z)
                        {

                            $('#success-msg').show();
                            $('#form').hide();

                        }
                });
                return false;
            }
</script>
</body>
</html>

对不起,如果这段代码太长,我不确定现在问题出在哪里。我对 AJAX 很陌生,所以这也可能是一个很大的因素。

【问题讨论】:

    标签: javascript jquery html ajax textarea


    【解决方案1】:

    这样就可以获取文本区域的值了。

    var textareaVal = $('textarea#explainfield').val();
    
    

    【讨论】:

    • 似乎不起作用。与@KhimajiValukiya 和其他人的回答相同
    • 没有错误。基本上,当我提交表单时,结果并没有按预期传输到我的谷歌表单
    • 所以基本上问题不在于获取 textarea 值,而在于获取其他内容,所以你应该找出答案!
    • 但我检查了其他人询问的适用于 Stack Overflow 的“运行代码”的 sn-p,但无法在我的东西上运行
    【解决方案2】:

    textarea的值可以用val方法取:

    var message = $('textarea#message').val();
    

    【讨论】:

      【解决方案3】:

      $('#clickToGetValue').click(function(){
        let idValue = $('#explainedFeildId').val();
        let nameValue = $('textarea[name="explainedFeildName"]').val();
        
        $('#selectedIdValue').text(idValue);
        $('#selectedNameValue').text(nameValue);
      });
      <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
      <textarea id='explainedFeildId' name='explainedFeildName'></textarea>
      
      <button id="clickToGetValue">Click to get value</button>
      
      <br/>Value by ID: <span id="selectedIdValue"></span>
      <br/>Value by NAME: <span id="selectedNameValue"></span>

      如果将值分配给文本区域,那么您可以使用.val() 有两种简单的方法可以返回 textarea 的值。

      按 id 使用,其中 id 为 #explainfield

      $("textarea#explainfield").val();

      按名称使用,其中名称为entry.1396765295

      $('textarea[name="entry.1396765295"]').val();

      【讨论】:

      • 仍然没有通过我的 ajax 请求。当我使用 textarea 变量时,该函数可以正常工作。
      • 检查了你的函数,其中var field2 = $("#emailField").val(); var field5 = $("#emailfield").text(); 都具有相似的名称,你检查过你的textarea id吗?
      • 它可以在 Stack Overflow 上正确运行代码,但不能在我的实际 Web 服务器上运行
      【解决方案4】:

      出现问题

          var field5 = $("#emailfield").text();
      

      字段名不正确

          var field5 = $("#explainfield").val();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-13
        • 2012-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多