Есть ли способ проверить параметр, если он пустой или нет перед отправкой?
<form method="GET"> <input name="param1" value="test"/> <input name="param2" value=""/> <input type="submit" name="" id="search-submit" class="button" value="Submit"> </form>
Если у меня есть что-то вроде этого. param2 пуст, поэтому, когда я нажимаю submit, он выглядит так
link.com?param1=test¶m2=
так можно достичь чего-то подобного, когда параметр пуст. его не следует включать. как
link.com?param1=test
поскольку param2 пуст
Чистый javascript метод
form.onsubmit=function(){ var arr=this.elements,i=0,l=arr.length; for(;i<l;i++){ if(arr[i].value===''){ arr[i].disabled=true; } } }
Чтобы ответить на дальнейший вопрос OP
function checkForm(){ var arr=this.elements,i=0,l=arr.length; for(;i<l;i++){ if(arr[i].value===''){ arr[i].disabled=true; } } } var arr=document.getElementsByTagName('form'),i=0,l=arr.length; for(;i<l;i++){ arr[i].onsubmit=checkForm; }
Всегда лучше проверять данные на стороне сервера, пользователь может отключить javascript и отправить форму. посмотрите на этот код и попробуйте:
// ПОЛНЫЙ КОД
// myFile.php
<?php if(isset($_GET['get'])){ //validating: if($_POST['param1']==""||$_POST['param2']==""){ echo 'come on boy, insert a text'; }else{ echo 'ok i got it <hr />' .$_POST['param1'].'<br />' .$_POST['param2'].'<br />'; } }else{ ?> <script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script> <script src="http://malsup.github.com/jquery.form.js"></script> <script type="text/javascript"> $(document).ready(function(){ $('#idForm').ajaxForm({ beforeSend: function() { $('#response').html('Processing...').show(); }, error: function(xhr, ajaxOptions, thrownError) { $('#response').html('Error:<br />'+thrownError); }, success: function(response) { $('#response').html(response); } }); }); </script> <form method="POST" id="idForm" action="myFile.php?get=0"> <input name="param1" id="idParam1" value="test"/><br /> <input name="param2" id="idParam2" value=""/><br /> <input type="submit" name="" id="search-submit" class="button" value="Submit"><br /><br /> </form> <div id="response"></div> <?php } ?>
Используя чистый javascript, это будет что-то вроде – (untested)
var form = document.forms[0]; form.onsubmit=function(){ var inputs, index; inputs = document.getElementsByTagName('input'); for (index = 0; index < inputs.length; ++index) { if(inputs[index].value == ''){ form.removeChild(inputs[index]); } } }
Используя jQuery, это будет что-то вроде – (untested)
$('form').submit(function() { $('input').each(function(){ if($(this).val() == ''){ $(this).remove(); } }); });
вам нужно проверить, установлен ли параметр с помощью функции isset () в php
так :
if ( isset($_GET['param2']) ) { //do some thing }...
и в основном страница даст вам ошибку, потому что $ _GET не установлен на первом представлении;
поэтому измените код на ::
if ( isset( $_GET['SUBMIT BUTTON'] ) ) { if ( isset ( $_GET['param2']) ) { //do some thing } }
Фильтр перед отправкой:
<form name="FOOO"> <input type="text" name="firsttt" value="blabla"> <tEXtarea> aaa</tEXtarea> <input type="text" name="Secondssssss" value="blabla2"> <input type="submit" onclick="return MyValidator('FOOO');"> </form> <script type="text/javascript"> function MyValidator(FORMNAMEE){ var inputs = document.forms[FORMNAMEE].getElementsByTagName("input"); for(var i = 0; i < inputs.length; i++) { alert(inputs[i].value); } var textareas = document.forms[FORMNAMEE].getElementsByTagName("textarea"); for(var i = 0; i < textareas.length; i++) { alert(textareas[i].value); } } </script>