2

私は、効果的に機能するために javascript を含む、仕事のための内部ジョブ送信のための新しいプロセスの設計に取り組んでいます。

スクリプト作成は私の得意分野ではありませんが、それが私を思いとどまらせることはありませんでした。さまざまなボタンやフィールドに挿入する 3 つの異なるコードを見つけることができ、それらは本来すべきことを実行しました。私の問題は、送信時に追加の検証を行うために、これらのいくつかを組み合わせる必要があることです。これは私が不足しているところです。

プロセス:

  1. ジョブに必要なコードに固有の特定の形式をチェックするカスタム検証スクリプトを現在実行しているフォームに必須フィールドがあります。これはうまく動作し、間違っている場合はアラートとヒントの画像を追加し、正しい場合は小さな目盛りを追加することさえできました. 美しい。

  2. フォームの 2 番目の主要部分は送信ボタンです。送信されたフォームにフィールドを件名として電子メールで送信するだけでなく、送信する前にすべてのフィールドを読み取り専用にするコードをハックしました。素晴らしい。

ここが厄介な部分です。ユーザーは必要なコードを正しく入力しても正しくなくても入力でき、バリデーターはその役割を果たしますが、フォームの送信を止めることはできません。罰金。送信ボタンでバリデーターを再度実行することで修正できます。これにより、必須フィールドのぼかしについてユーザーにフィードバックが返されるだけでなく、送信時に再度検証されるため、フィールドが正しくない場合、ユーザーがフィールドに正しい値を入力するまで送信が停止します. ここで私の知識は崖っぷちのように止まり、橋を架けることはできないようです。フィールド値を呼び出すさまざまな方法を試してから、同じ検証スクリプトをいくつかのifステートメントとelseステートメントで実行しましたが、うまくいきません。

誰でも助けることができますか?以下の送信ボタンの現在のコードですが、このコードの検証セクションも必須フィールドに直接添付されていることに注意してください (これは影響しますか?):

function OR_Stuff() {

      var ProjectTitle = getField("ProjectTitle").value;
      var Brand = getField("Brand").value;
      var Name = getField("Name").value;
      var Noosh = getField("INT_NooshCode").value;

      for (var i = 0 ; i < this.numFields ; i++) {
                var f = this.getField(this.getNthFieldName(i));
                if (f.type != "Submit") // Change f.type to button name in form that the action is applied to
                          {
                                    f.readonly = true;
                          }
      }


      this.mailDoc({

      cTo: "email",

      cBcc: "email",

      cSubject: "NEW JOB: "+Brand+" - "+ProjectTitle+" - "+Noosh,

      cMsg: "Thanks "+Name+" for sending through this job."

      }); 
      }
      var re = /^\d{5}[A-Z]\d{2}$/
      if (re.test(INT_NooshCode.value) == false) {
      this.getField("RequiredAlert").display = display.visible;
      this.getField("NooshTick").display = display.hidden;
      app.alert("Sorry, we can't start a project without a Noosh code. \n\nPlease enter a valid Noosh code EG: 34256P02");

      }
      else {
      OR_Stuff();
      }
4

0 に答える 0