Я создал флеш-сайт с контактной формой, которая отлично работает в FireFox, IE и Chrome на моем компьютере. Однако в Safari я не могу набирать текстовое поле; и на Android, я sowehow может только набирать заглавные буквы (в основном caplock включен, и он не позволит мне перейти на нижний регистр).
Я подозреваю, что проблема полностью лежит во Flash, так как отправка электронной почты работает очень хорошо. Поиск здесь или в Google не приводит меня к чему-либо связанному.
Какие-нибудь советы?
Вот мой код:
FormScript.as (это внешний .as-файл, который вызывается из моего основного файла .as)
//***All imports, vars, etc*** function submit(e:MouseEvent):void { //Check to see if any of the fields are empty if(yourName.text == "" || fromEmail.text == "" || yourSubject.text == "" ||yourMsg.text == "" ) { valid.text = "All fields must be filled"; } //Check if you're using a valid email address else if(!checkEmail(fromEmail.text)) { valid.text = "Please fill in an existing email"; } else { valid.text = "Verzenden.."; var emailData:String = "name=" + yourName.text + "&from=" + fromEmail.text + "&subject=" + yourSubject.text + "&msg=" + yourMsg.text; var urlVars:URLVariables = new URLVariables(emailData); urlVars.dataFormat = URLLoaderDataFormat.TEXT; urlRequest.data = urlVars; varLoad.load( urlRequest ); varLoad.addEventListener(Event.COMPLETE, thankYou ); } } function reset(e:MouseEvent):void { init(); //call the initial clear function } function checkEmail(s:String):Boolean { //This tests for correct email address var p:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/; var r:Object = p.exec(s); if( r == null ) { return false; } return true; } function thankYou(e:Event):void { var loader:URLLoader = URLLoader(e.target); var sent = new URLVariables(loader.data).sentStatus; if( sent == "yes" ) { valid.text = "Thanks for your email!"; timer = new Timer(500); timer.addEventListener(TimerEvent.TIMER, msgSent); timer.start(); } else { valid.text = "Something went wrong, please try again"; } } function msgSent(te:TimerEvent):void { if(timer.currentCount >= 10) { init(); timer.removeEventListener(TimerEvent.TIMER, msgSent); }
PHP-файл для обработки почты:
<?php $yourName = $_POST['name']; $fromEmail = $_POST['from']; $yourSubject = $_POST['subject']; $yourMsg = $_POST['msg']; if( $yourName == true ) { $sender = $fromEmail; $yourEmail ="myemailaddress@example.com"; // Naturally I put in my own email address here :) $ipAddress = $_SERVER['REMOTE_ADDR']; // This gets the user's ip Address $emailMsg = "Van: $sender\r\n" . "Naam: $yourName\r" . "Subject: my site - $yourSubject\n\n" . "$yourMsg\n\n\n\n" . "------------------------------\r" . "Verstuurd vanaf IP-adres $ipAddress\r" . "X-Mailer: PHP/" . phpversion(); $return = "From: $sender\r\n"; if( mail( $yourEmail, "$yourSubject", $emailMsg, $return)) { echo "sentStatus=yes"; } else { echo "sentStatus=no"; } } ?>
Мне удалось решить проблему с Android. Safari все еще не позволит мне печатать.
Я изменил название – Оригинальный вопрос: «Flash-форма на Android позволяет мне вводить только заглавные буквы / CAPS, сафари не позволит мне вводить текст вообще»
Часть, которая, вероятно, сделала трюк для Android, заключалась в том, что .htmlText
были для .htmlText
вместо .text
в коде AS3.
Единственное, что я хотел бы предложить, – проверить, нужно ли обновлять версию Flash. Я видел проблему до того, где я не мог набирать Firefox, и обновление Flash разрешило это.