i have javascript that changes an input's value and when i post the form, the field is not transferred
<input id="exampleID" type="button" name="exampleButton" value="click me" onclick="changeValue()">
when the button is clicked the value (displayed to the user) changes to "Clicked"
then when i post the form it the value is left behind
if(isset($_POST['exampleButton'])) {
echo "true";
}
this doesn't echo anything
what should i do?
You can change value of hidden field:
<input id="exampleID" type="hidden" name="exampleButton" value="">
<input type="button" value="click me" onclick="changeValue()">
<script>
function changeValue(){
document.getElementById('exampleID').value = "Clicked";
}
</script>
The input button control won't send any value to the server on submit, as it is made to interact with javascript. If you need to send a dynamic value, store it in a field (like an input hidden control), or, if you insist to send it through a button, change its type to submit
Related
For a project, I need to generate a dynamic html form that will send POST info to a PHP page via the ACTION field.
The form has not to be static, it has to be dynamic so the user has to be able to generate(ADD) a not fixed(dynamic) number of input tags, then when all the inputs are generated and filled the user may click on submit button and send all the info to a php document via post.
I'm completely lost
I've been playing with this piece of code that generates the inputs but I'm not able to send the data via post to the php file
<script>
var choices=[];
choices[0]="one";
choices[1]="two";
function addInput(divName){
var newDiv=document.createElement('div');
newDiv.innerHTML="<input type='text'>";
newDiv.innerHTML=newDiv.innerHTML+"</input>";
document.getElementById(divName).appendChild(newDiv);
}
</script>
<form class="new" method="post" action="action.php">
<div id="dynamicInput">
</div>
<input type="button" value="Add" onclick="addInput('dynamicInput');" />
<input type="button" value="Save" />
</form>
To submit the form, one possible scenario is to change the type of Save button to submit:
<input type="submit" value="Save" />
Also add name property to your auto generated inputs. Otherwise you won't access the submitted $_POST data:
<input name="enter_name[]" type='text'>
As you see, I'm concatenating [] to the input field. That will convert all submitted data into an array. Otherwise, that last one auto generated input will overwrite the previous entered data.
just change your input type to submit instead of save
<input type="submit" value="Save" />
and you don't need to create new div each time to create an input you can either append it to the div you already have
document.getElementById(divName).innerHTML+= "<input type='text' name= 'added_input[]'/>";
or
var newInput=document.createElement('input');
// if you want each input in separate lines
newInput.style.display = "block";
newInput.setAttribute("name","added_input[]");
document.getElementById(divName).appendChild(newInput);
and in your php file you can get post values like this :
for ($i = 0; $i < $_POST['added_input']; $i++){
echo $_POST['added_input'][$i];
}
for more option to get post values see This Question
here i am getting a value from previous page with form here i assign the value to php variable $foodid i want to echo its value after the continue button is clicked
//its value is passed from the previous page form with action to this page
$foodid = $_REQUEST['foodid'];
//as soon as continue button is clicked i want to display $foodid
<form method="post" action="">
<input type="submit" name="continue" value="continue">
</form>
if(isset($_POST['continue'])){
echo $foodid;//here the foodid variable must be declared
}
PHP is a server side languaue
JAVASCRIPT - is a client side language
After redirecting to new page , you have the value with your self, but displaying it on click is possible with javascript only (will display the number without refreshing the page)
in PHP - its not impossible, but it does not make sense to redirect to same page with some additional parameters's to display
eg; on click continue , submit a form with no action and there form should have that input field with value which you want to display (can be in hidden type), it will get submitted to same page and you will get your value using
$_REQUEST['field_name'];
But its not recommended , use JS for this, people purposely use JS for such kind of things
You should pass the $foodid value through form to the php page. This can be done by declaring a hidden variable and assigning foodid value to it.
Try this
<?php
$foodid = $_REQUEST['foodid'];
?>
<form method="post" action="">
<input type="hidden" value="<?php echo $foodid ?>"
<input type="submit" name="continue" value="continue">
</form>
<?php
if(isset($_POST['continue'])){
echo $foodid = $_POST['foodid'];
}
I have a form in which i have two input button one for multiple delete and another for multiple suspend items. like this-
<form>
<input type="checkbox" name="check_item[]" value="<?php echo $users['user_id']; ?>" />
<input type="button" id="suspendall" name="suspendall" value="Suspend" />
<input type="button" id="deleteall" name="deleteall" value="Delete" /></td>
</form>
when I click on delete or suspend it ask for confirm that event by jquery like-
$('#deleteall').click(function() {
if(confirm('Really Want To Delete This?')){
$('#listing').submit();
}
});
if it confirm cancel form is not submitted and if it confirm OK form is submitted and on submission i have to delete or suspend that item from db. I have write this code for this-
if(isset($_POST['deleteall'])){
$check_array = $_POST['check_item'];
$usersId = implode($check_array,',');
$db->deleteUser($usersId);
}
if(!empty($_POST['suspend'])){
$check_array = $_POST['check_item'];
$usersId = implode($check_array,',');
$db->suspendUser($usersId);
}
the problem I am facing is both times when the form is submited i got only array of ids of check boxes. I am not able to identify which button is clicked because I am not getting button value. that why its not working, and if I changed these button into submit button its working very nice but didn't ask for confirm the event. What should I do for that. Do anyone have any solution for that, Please help me. thanks
When submitting with jQuery().submit() the button on which was clicked is lost.
You could try to not submit() the form in the click handler but instead call evt.preventDefault() when ! confirmed().
In you HTML form has a hidden form field.
On the JS event set the value of the hidden field before submitting
$('#deleteall').click(function() {
if(confirm('Really Want To Delete This?'))
{
$("#hiddenFormId").val("deleteAll");
$('#listing').submit();
}
});
Then use this type of code in your PHP (Sorry not a PHP programmer)
if $_POST['hiddenFormId'] == 'deleteAll'
I have a button on my form. I want to check if it's pushed or not. I tried like this:
<input type="button" name="btn" id="btn" class="btn1" value="Creaza Sondaj" />
if (isset($_POST['btn']))
But this method is only working for submit buttons. How can I check if a button is pushed?
If you want to handle pushing button with PHP, change it's type to submit.
Otherwise handle click event with JavaScript.
What you might want to do is when a button is pressed, add a hidden input field to your form with javascript. That hidden field won't be displayed to the user, but once the form is submitted, your PHP will be able to read the value of that input. If the value exists, the button was pressed.
Here is a jQuery example -
$('#btn').on('click',function(){
$('#form').append('<input type="hidden" name="form_data[btn]" value="btn_clicked!" />');
});
Here is a "raw" JavaScript example, execute this code with an onclick event -
var newInput = document.createElement('input');
newInput.innerHTML = '<input type="hidden" name="form_data[btn]" value="btn_clicked!" />';
document.getElementById('form_id').appendChild(newInput);
Make sure to give it a name attribute so that you'll know where to look for the values in your PHP.
You have to use $_POST i.e. make your form submit to the page with:
<?php
if (isset($_POST['btn']))
Otherwise, you can use JavaScript/jQuery like:
<input type="button" name="btn" id="btn" class="btn1" value="Creaza Sondaj" />
<script>
$('#btn').click(function(){
// do something
});
</script>
i wanna disable a submit button when onclick. im able to disable the button but i cant submit the post value to php.
<input type="submit" onclick="this.disabled = true" value="Save"/>
or ref this
If you disable an input, then its value naturally won't be included in the form data. You'll need to disable the button after you submit. If you bind a callback to onclick, then it runs before the form submits.
What you need is something like this:
jQuery:
$(document).ready(function() {
$(document).unload(function() {
$('#submit-btn').attr('disabled', 'disabled');
});
});
Regular JS:
document.onunload = disableSubmit;
function disableSubmit() {
/* disable the submit button here */
}
Basically, instead of binding to the submit button's onclick event, this binds the disabling code to the document's unload event (document.onunload), which gets fired once the form is submitted and you begin to leave the page.
I solved it with simple jQuery. The code removes the button on click, then appends the fake button or some like "loading.." text and finally sends the form.
HTML:
<div class="holder"><input type='submit' value='ACCEPT' class='button'></div>
jQuery:
$('.button').click(function() {
$('.button').remove();
$('.holder').append("//fake input button or whatever you want.");
$('.form').submit();
});
In diference with other methods like unload the button changes in the instant moment you click and sends the form. With heavy forms i think is a better practice.
Using jQuery, add onClick handler that returns false:
<input type="submit" value="Submit" onClick="$(this).click(function() {return false;});"/>
i found a alternative online. wat i did is to create a fake disable and hidden button. when the actual button is clicked, i will hide it and show the fake disable button.
actual button:
$onclick = "
var boolconfirm = confirm('$strconfirmattempt');
if(boolconfirm==true){
finishattempt.style.display='none';
finishattempt2.style.display='inline';
}
return boolconfirm;";
fake button:
echo "<input type=\"submit\" name=\"finishattempt\" value=\"submit\" onclick=\"$onclick\" />.
<input type=\"submit\" id=\"finishattempt2\" name=\"finishattempt2\" value=\"submit\" style=\"display:none;\" DISABLED/>\n";
You could use a hidden field which would hold the value of the button and pull that value out of your POST data:
<input type="hidden" id="hiddenField" value="default" />
<input type="button" id="myButton" onclick="buttonClick();">
function buttonClick()
{
document.myForm.myButton.disabled = true;
document.myForm.hiddenField.value = "myButtonClicked";
}
My PHP is a little rusty, but then you can access the hidden field like so:
if ($POST['hiddenField'] == "myButtonClicked")
{
// Click handling code here
}
Why not create a disabled submit button that is hidden, and an active submit button, and onClick show the disabled and hide the active? I could do this in jQuery, but I'm kinda useless without it. Sad, eh?
Here's a method using onsubmit instead of onlick:
This goes at the top:
<script type='text/javascript'>
function disableButtons()
{
$('input[type="submit"]').attr('disabled', true);
}
</script>
Then your PHP (note that isset post is NOT for the submit button, because we want to disable the submit button).
if (isset($_POST['dothis']))
{
//CODE TO EXECUTE
}
Then HTML.
<form method='post' action='' onsubmit='disableButtons()'>
<input type='hidden' name='dothis' value=''>
<input type='submit' value='Submit'></form>
Onsubmit goes in .
Make sure your isset (the PHP part) is for an input that goes with your submit, but is not the submit button itself. You can see that it is the hidden value being checked for with the PHP, rather than the submit button, and the submit button is what gets disabled.
By doing this, you can disable a submit button without disabling the PHP.