Братья и сестры возвращаются всегда неопределенными - PullRequest
0 голосов
/ 21 апреля 2019

Если вы видите код jquery ниже, hv и commentid возвращают undefined. Для «hv» я пробовал «братьев и сестер», а для «commentid» я пробовал следующее :-( (идентификатор комментария находится во 2-й форме div / 2nd)

Что я делаю не так, пожалуйста?

Я всегда мог бы сделать несколько If, чтобы обнаружить отправляемую форму, а затем опубликовать нужное мне содержимое div. Однако, это может запутаться, так как будут поперечные сообщения туда и обратно

И я действительно предпочел бы использовать «скрытые» поля, чтобы сообщения могли работать хорошо в Ajax.

Любая помощь очень ценится

Код jquery:

<script type="text/javascript">
                        $(document).ready(function() {
                        // $("form").submit(function() { ///9675943/ne-udaetsya-prochitat-znachenie-skrytogo-svoistva-posle-ajax#9675946
                        $(document).on('submit', 'form', function() {
                         // Getting the form ID
                         var  formID = $(this).attr('id');

//var hv = $('input[name=target]').val(); //this only worked for the 1st div, and hadn't worked for the 2nd div
//alert(hv);

//alert( $("#form2 input[name=target]").val() ); //works
alert ("formID at start is " + formID);
var hv = $(this).siblings('.target').val();

alert ("siblings is " + hv);
    var commentid = $(this).parent().next('.commentId').val();
    alert("comment id is " + commentid);

                         var formDetails = $('#'+formID);
                         $.ajax({
                         type: "POST",
                         url: 'ajax/',
                         data: formDetails.serialize(),
                         success: function (data) { 
                         // Inserting html into the result div
                         $('#'+hv).html(data);
                         },
                         error: function(jqXHR, text, error){
                                    // Displaying if there are any errors
                                     $('#'+hv).html(error);           
                                }
                            });
                         return false;
                         });
                        });
                        </script>

HTML-код:

<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>
<p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>


<div id="div_left" style="background-color:lightblue">
    <form  name="contact1" action="contact.php" method="POST" id="form1">    
 <div>Name: <input type="text" name="name" id="name"   required /></div> 
 <div>Email: <input type="email" name="email" id="email"  required /></div>
 <input type="hidden" name="target" value="div_right">
 <div><input type="submit" name="submit1" id="submit1" value="Submit" /></div> 
</form>

    <p>This is Div FORM1</p>
</div>

<hr>


<form name="contact2" id="form2">  
    <div id="div_right" style="background-color:yellow">

 <br>Name: <input type="text" name="name"  required />
 <br>Message: <input type="text" name="message"  required />
 <input type="hidden" class="target" name="target" value="div_bottom">
  <input type="submit" name="submit2" id="submit2" value="Submit" /> 
    <p>This is DIV form 2</p>
</div> 
    <input type="hidden" name="commentid" value="commentid_is_7">
</form>




<div id="div_bottom" style="background-color:brown"><p>This is DIV Response. </p><p>This is DIV Response. </p><p>This is DIV Response. </p><p>This is DIV Response. </p><p>This is DIV Response. </p><p>This is DIV Response. </p></div>

1 Ответ

0 голосов
/ 21 апреля 2019

Вы неправильно используете функцию .siblings () в своем коде: var hv = $(this).siblings('.target').val(); вернет всех братьев и сестер формы с classname = 'target', вы должны следовать своему селектору предупреждений (который работает), как показано ниже: var hcv = $(this).siblings("input[name=target]").val();

также измените ваш обработчик событий, так как он также неверен

с

$(document).on('submit', 'form', function()

до

$('form').on('submit',  function() {...})

или еще лучше

$('form').submit(function() {...})
...