Мне нужна помощь в моей php-программе.
У меня есть 2 формы внутри моего test.php
Моя программа работает так. Если вы нажмете отключенное текстовое поле, появится модальный флажок, содержащий форму с флажком. Если только один из флажков был проверен, я собираюсь отобразить его в текстовом поле с отключенным текстовым полем, иначе если было проверено более 2, я покажу значение «Несколько» в отключенном текстовом поле.
Короче, я покажу только текстовую метку в пользовательском интерфейсе, в то время как ее значение будет вставлено / обновлено в системную базу данных.
Я пробовал много условий, и все же я не понимаю. кто-нибудь мне поможет.
Вот мой взгляд вроде кода
testing.php
<form method="post" name="mainform" action=""> <label>TestLabel</label> <a href="#modal"> <!-- when the input textbox was clicked, modal will pop up --> <input disabled type="text" name="test" placeholder="test" value=""> </a> </form> <form method="post" name="modalForm" id="modalForm" action="testing.php"> <div class="modalwrapper" id="modal"> <!-- modal --> <div class="modalcontainer"> <div class="modalcol1"> <label>Test 1</label> <input type="checkbox" name="test_modal[]" value="mark"> <div class="clear"></div> <label>Test 2</label> <input type="checkbox" name="test_modal[]" value="joe"> <div class="clear"></div> <label>Test 3</label> <input type="checkbox" name="test_modal[]" value="kevin"> <div class="clear"></div> <label>Test 4</label> <input type="checkbox" name="test_modal[]" value="michael"> <div class="clear"></div> <label>Test 5</label> <input type="checkbox" name="test_modal[]" value="jordan"> <div class="clear"></div> <div class="savebutton"> <input class="btn1" type="submit" value="Submit"/> </div> </div> </div> <div class="overlay"></div> </div> </form>
styles.css
/* modal layout */ .modalwrapper { top: 0; left: 0; opacity: 0; position: absolute; visibility: hidden; box-shadow: 0 3px 7px rgba(0,0,0,.25); box-sizing: border-box; transition: all .4s ease-in-out; -webkit-transition: all .4s ease-in-out; -moz-transition: all .4s ease-in-out; } .modalwrapper:target { opacity: 1; visibility: visible } .overlay { background-color: #000; background: rgba(0,0,0,.8); height: 100%; left: 0; position: fixed; top: 0; width: 100%; z-index: 1; } .modalcontainer { display: table; background-color: #777; position: relative; z-index: 100; color: #fff; padding: 5px; } .modalcol1 { display: table-cell; } .clear { clear: both; } .modalwrapper input[type=checkbox] { float: right; margin-right: 20px; } .savebutton input[type=submit] { float: right; background-color: maroon; color: #fff; border: none; padding: 5px 10px; margin-top: 5px; margin-right: 20px; } /* modal layout ends here */
Надеюсь, вы, ребята, можете мне помочь. Я хочу знать, как передать значение флажков на моей основной форме. Огромное спасибо заранее.
Я пробовал этот код, задал id = "submit" в кнопке submit модальной формы и id = "test_modal []" на флажках, я использовал некоторые функции jquery, которые я установил в заголовке <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script type="text/javascript"> $(document).ready(function(){ $("#submit").click(function(e) { // var checked = []; i=0; temp="" $("input[name='test_modal[]']:checked").each(function () { temp=$(this).val(); i++; // checked.push($(this).val()); }); if (i==1) $("#test").val(temp); else if (i>1) $("#test").val('multiple'); $("#modal").fadeOut(); // alert($("#do").val()) e.preventDefault(); }); });</script>
Вот пример для нескольких случаев, которые могут оказаться полезными для вашей проблемы.
Переменная PHP для переменной Javascript:
<?php $myvar=10; ?> <script type="text/javascript"> jsvar = <?php echo $myvar; ?>; document.write(jsvar); // Test to see if its prints 10: </script>
Переменная переменной переменной Javascript:
<form name="myform4"> <input type="hidden" name="formvar" value="100"> </form> <script type="text/javascript"> jsvar = document.myform4.formvar.value; document.write(jsvar) // test </script>
Переменная PHP для переменной формы:
<form name="myform4"> <input type="hidden" name="formvar" value="<?php $phpvar=10; echo $phpvar; ?>"> // PHP code inside HTML!! </form>
Переменная Javascript для переменной формы:
<form name="myform3"> <!-- It needn't be a "hidden" type, but anything from radio buttons to check boxes --> <input type="hidden" name="formvar" value=""> </form> <script type="text/javascript"> jsvar=10; document.myform3.formvar.value = jsvar; </script>
JavaScript: Вы можете решить эту проблему только с помощью JS. Для этого вам нужно заменить action
-Attribute в form
-Tag на action="#"
. Чтобы узнать больше о хэштеге, найдите эту ссылку.
После этого вам нужно вызвать JS-функцию, когда форма будет отправлена. Вы можете сделать это, добавив onSubmit="countCheckboxes()"
в <form>
-Attribute. Это означает, что если форма будет отправлена, эта JS-функция будет выполнена. Теперь вам просто нужно создать новую JS-функцию, называемую countCheckboxes()
. Там вы можете подсчитать выбранные флажки с помощью этой строки:
alert(document.querySelectorAll('input[type="checkbox"]:checked').length);
Проверьте, есть ли только один выбранный флажок или больше, и установите значение <input>
.
Наконечник:
Получите значение только установленного флажка, вы должны перестроить свой HTML следующим образом:
<label> Step 1 <input type="checkbox" ... /> </label> <label> Step 2 ...
А затем получите (первый и единственный) текст в ярлыке с отмеченным полем следующим образом:
document.querySelectorAll('input[type="checkbox"]:checked')[0].parentElement.textContent
jQuery: Чтобы открыть и закрыть свой модальный, вы должны использовать JS. Я рекомендую вам использовать библиотеку jQuery (ознакомьтесь с этой статьей, чтобы узнать, как использовать jQuery в JS). При этом вы можете просто открыть и закрыть модальный с помощью .fadeIn () и .fadeOut () . На самом деле, здесь у нас есть другая проблема: обычно в jQuery вы можете проверить, было ли что-то нажато с помощью этого кода:
$("#idOfYouElement").click(function() { // this code gets executed if the element got clicked });
Но в вашем случае input
отключен и не запускает clickevent, и это приводит к тому, что .click()
-Function также не выполняется. Чтобы исправить это, мы <div>
на вход, который является прозрачным, чтобы пользователи его не видели. Затем мы добавляем .click()
-функцию к этому div
а не к input
. Это будет выглядеть так:
HTML:
<form method="post" name="mainform" action=""> <label>TestLabel</label> <input type="text" id="inpCheckboxes" name="test" placeholder="test" value="" disabled > </form>
JavaScript:
$("#inpCheckboxes").click(function(){ $("#idOfYourModal").fadeIn(); });
После этого мы должны закрыть модальный файл после нажатия кнопки отправки. Для этого есть несколько решений, для меня этот, использующий .submit()
является самым чистым:
$("#idOfYourForm").submit(function() { $("#idOfyourModal").fadeOut(); // Since your Modal is also your Form, you could also use here $(this).fadeOut(); });
Вы также хотите подсчитать все выбранные флажки. Вы можете комбинировать это с вашей функцией выше, поскольку вы хотите подсчитать флажки, когда пользователь нажимает «submit». JQuery-способ подсчета боксов:
var l = $("input[type='checkbox']:checked").length;
С помощью этого значения теперь вы можете использовать if else
установить значение вашего <input>
-Field (не забудьте удалить теперь disabled
-Attribute из него).