2016-03-17 2 views
1

У меня есть форма, которую я хотел бы отключить кнопку отправки и сформировать ее после ее отправки. Форма в настоящее время представляет себе и все решения, которые я пробовал до сих пор, либо отключил кнопку формы и отправки, но форма никогда не отправляется или форма не отправляется, но кнопка/форма не отключены.jQuery/JS/PHP - отключить форму и отправить кнопку только после отправки

PHP:

<?php 

if(isset($_POST['send'])){ 

if(!isset($_SESSION)) 
    { 
     session_start(); 
     session_regenerate_id(); 
    } 
if($_SESSION['user_login_status']==false) 
{header('Location:../index.php');} 

$Firstname = $_POST["firstname"]; 
$Lastname = $_POST["lastname"]; 
$EmpID = $_POST["employeeid"]; 
$Ticket = $_POST["ticket"]; 
$Office = $_POST["office"]; 
$Division = $_POST["division"]; 
$Device = $_POST["device"]; 
$Secure = $_POST["secure"]; 
$Zendesk = $_POST["zendesk"]; 
$Agent = $_SESSION['user']; 

$psPath = 'c:\\Windows\\System32\WindowsPowerShell\v1.0\\powershell.exe -version 5'; 
$psDIR = "d:\\wamp64\\www\\includes\\"; 
$psScript = "NewHire.ps1"; 
$runCMD = $psPath. ' -ExecutionPolicy RemoteSigned '.$psDIR.$psScript.' -Firstname ' .$Firstname. ' -Lastname '.$Lastname. ' -EmpID ' .$EmpID. ' -Ticket ' .$Ticket. ' -Office ' .$Office. ' -Division ' .$Division. ' -Device ' .$Device. ' -Secure ' .$Secure. ' -Zendesk ' .$Zendesk. ' -Agent ' .$Agent; 

$createuser = exec($runCMD, $out); 

} 
?> 

урезана HTML:

 <form class="rnd5" method="post" id="frm"> 
     <div class="form-input clear"> 
     <label class="one_third" for="firstname">Firstname <span class="required"><font color="red">*</font></span> 
      <input type="text" name="firstname" id="firstname" autofocus required> 
     </label> 
     </div> 

    <!-- ################################################################################################ --> 
     <div class="form-input clear"> 
     <label class="one_third" for="lastname">Lastname <span class="required"><font color="red">*</font></span> 
      <input type="text" name="lastname" id="lastname" required> 
     </label> 
     </div> 


     <p> 
      <input type="submit" name="send" value="Submit"> 
      &nbsp; 
      <input type="reset" value="Reset"> 
     </p> 
     </form> 
    </div> 
    <!-- ################################################################################################ --> 
    <div class="clear"></div> 
    </div> 
</div> 

<!-- Footer --> 
<?php include('../footer.php'); ?> 
</body> 
</html> 

Я пробовал различные функции, такие как:

  $(function() { 
       $(".send").click(function() { 
        $(".send").attr("disabled", true); 
        $('#frm').submit(); 
       }); 
      }); 

и

$('input:submit').click(function(){ 
    $('input:submit').attr("disabled", true); 
}); 

Пока ничего не работает. У кого-нибудь есть идеи?

ответ

1

Я вижу две основные проблемы с вашим кодом. Во-первых, ваши селектора jQuery.

В первой функции:. . селектор (как в $(".send") работ по атрибуту класса, а не атрибут имя, которое я хотел бы предложить вам либо изменить свои входы, чтобы иметь class = send или изменить селектор $("[name=send]")

. . Во второй функции я уверен, что $('input:submit') не является допустимым селектором, и я не уверен, что подразумевается под этим

Отъезд:. http://www.w3schools.com/jquery/jquery_ref_selectors.asp

Вторая проблема заключается в том, что вы отправляете f orm и тем самым инициировать перезагрузку страницы. Я полагаю, что это не желаемое поведение, если вы хотите отключить кнопки формы? В этом случае вы должны отключить поведение кнопки по умолчанию (существует много способов сделать это: Stop form refreshing page on submit) и ПОЧТОВИТЬ данные на сервер самостоятельно.

Это оставит вас с чем-то вроде следующего:

 $(function() { 
      $("[name='send']").click(function() { 
       $(this).attr("disabled", true); 
       $("#frm").submit(); 
      }); 

      $("#frm").on("submit",function() { 
      $.post("http://example.com/your_php_file.php",$(this).serialize()); 
      $(this).preventDefault(); 
      }); 
     }); 

Я не был в состоянии проверить это сам, потому что я не так много времени, ни удобный веб-сервер, но это должно дать вам хорошее начало.

+0

Спасибо за информацию Крис. Я расскажу об этой информации. –

Смежные вопросы