変数 ' f ' が FALSE の場合、 TRUE または FALSEを返したい。しかし、戻り値がブラウザーに到達することはなく、フォームはデフォルトのアクションを実行します。
ELSE に値を返すようにするにはどうすればよいですか? ' return myFunction(); ' と書く代わりに、戻り値をハードコーディングしようとしました。' これは機能しますが、' myFunction() 'からの戻り値が必要なため、役に立ちません。
コードが何をするべきかについてはあまり考えないでください。意味がありません。デモ用です。
$('#theForm').submit(function()
{
var f = $('#theInput').val(); // input value
if(f == TRUE)
{
alert('Lorem ipsum');
return false;
}
else // If f is FALSE
{
$.post('/php/check.php',{check: f, function(data){myFunction(data);});
function myFunction(data)
{
if(data == 'false')
{
// Do something
return false;
}
else
{
// Do something
return true;
}
}
return myFunction();
}
});
これを試しましたが、「return myFunction()」からフォームに値をまだ返していません
$('#theForm').submit(function()
{
var f = $('#theInput').val(); // input value
if(f == true)
{
alert('Lorem ipsum');
return false; // Stop default form action
}
else // If f is FALSE
{
var request = $.ajax({
async: false,
url: "/php/checkArea.php",
type: "POST",
data: {data: f},
dataType: "text"
});
request.done(function(data) {
myFunction(data);
});
function myFunction(data)
{
if(data == 'false')
{
// Do something
return false; // Stop default form action
}
else
{
// Do something
return true; // YES PLEASE, do the default form action
}
}
return myFunction();
}
});
非同期部分に関して、あなたの助けを借りて、最終的に解決策を見つけました。
$('#theForm').submit(function()
{
var f = $('#theInput').val(); // input value
if(f == true)
{
alert('Lorem ipsum');
return false; // Stop default form action
}
else // If f is FALSE
{
var request = $.ajax({
async: false,
url: "/php/checkArea.php",
type: "POST",
data: {data: f},
dataType: "text"
});
request.done(function(data) {
globalData = data; // Global variable
});
function myFunction(globalData)
{
if(globalData == 'false')
{
// Do something
return false; // Stop default form action
}
else
{
// Do something
return true; // YES PLEASE, do the default form action
}
}
return myFunction(globalData); // Call the function with the global variable
}
});
これは完全に機能します:-)