2015-01-25 5 views
0

Я пытаюсь проверить несколько полей перед отправкой формы. После того, как поля будут проверены CF, я хочу выставить форму знака, если пользователь не выполнил вход. Однако проблема заключается в том, что форма знака всплывает без проверки.Проверка CFForm и onclick перед отправкой

inquiry.cfm

<cfif not isdefined("form.p1")> 
    <cfform name="inquire" action="inquiry.cfm" method="post"> 
    <input type="hidden" name="p1" value="1"> 
    <cfinput type="text" name="email" size="50" maxlength="50" required="yes" autofocus="on" validate="email"> 
    <cfinput type="text" name="subject" size="50" maxlength="50" required="yes" validate="noblanks"> 
    <cftextarea name="message" cols="45" rows="8" wrap="soft" required="yes" validate="noblanks"></cftextarea> 
    <cfif signedin> 
     <input type="submit" value=" Send "> 
    <cfelse> 
     <input type="submit" value=" Send " onclick="signin(); return false"> 
    </cfif> 
<cfelse> 
    do stuff.... 
</cfif> 

Функция "для входа в аккаунт" появится знак в форме.

То, что я пытался до сих пор, кроме выше:

  1. onSubmit вместо OnClick. Но я не хочу подавать форму до тех пор, пока пользователь не войдет в систему.
  2. помещает onClick в тег CFFORM, но одновременно будет отображаться экран подтверждения и входа в систему. После отклонения экрана проверки полей CF, но только заполнить экран входа на экран, будет отправлен пустой бланк, т. Е. Нет подтверждения.
  3. с использованием тега CFINPUT вместо INPUT. Не было никакой разницы, но также испортил текст кнопки.

Любая помощь приветствуется. Заранее спасибо.

+2

Почему не другой подход? Если пользователь не подписан, не представляйте форму. –

+0

Это был бы мой последний вариант :( – Jack

+1

Это должен быть ваш первый вариант. –

ответ

2

@Jack, Это просто пример проверки полей формы с использованием ajax. Чтобы использовать его, вам может потребоваться внести некоторые изменения. Более того, я предпочитал использовать html-формы в этом простом примере. Скажем, у нас есть validatoin.cfc с именем метода 'validation', которое принимает arg.

<cffunction name="validation" access="remote" returntype="any" returnformat="JSON" output="false"> 
    <cfargument name="args" type="any" default=""> 
    <cfset var retval ='{"return":"false"}'> 
    <cfif len(trim(arguments.args))> 
     <cfset retval = '{"return":"true"}'> 
    </cfif> 
    <cfreturn retval> 
</cffunction> 

И вот код для файла cfm.

<div id="target"> 
    <form name="inquire" action="TestOne.cfm" method="post"> 
    <input type="hidden" name="p1" value="1"> 
    <input id="email" type="text" name="email" size="50" maxlength="50" required="yes" autofocus="on" validate="email" ><br><br> 
    <input type="text" name="subject" size="50" maxlength="50" required="yes" validate="noblanks" ><br><br> 
    <textarea name="message" cols="45" rows="8" wrap="soft" required="yes" validate="noblanks" ></textarea> 
    </form> 
    </div> 

<script> 
    jQuery("#target").on("click", function(){ 
     var d = $('#email').val(); 
     $.ajax({ 
      type: 'POST', 
      url: 'validation.cfc?method=validation', 
      dataType: "json", 
      data: { args: d }, 
      success: function(data) { 
       if(data.return != 'true'){ 
        alert("Please enter an valid email address");     } 
      } 
     }); 
    } 
</script> 
+0

Я предполагаю, что есть вход с типом submit, который вызывает функцию signin? Я не знаю jQuery, поэтому мне будет сложно модифицировать код или поддерживать его :-( – Jack

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