කලකට පෙර මට සමාන දෙයක් අවශ්ය විය ... මට එය ලැබුණි.
එබැවින් මා මෙහි තබන්නේ ජාවාස්ක්රිප්ට් විසින් කිසිදු වලංගු භාවයකින් තොරව ඉදිරිපත් කළ හැකි ආකෘති පත්රයක් ලබා ගැනීම සඳහා උපක්රම කරන්නේ කෙසේද යන්න සහ පරිශීලකයා බොත්තමක් එබූ විට පමණක් (සාමාන්යයෙන් යවන බොත්තමක්).
උදාහරණයක් ලෙස මම අවම පෝරමයක් භාවිතා කරමි, ක්ෂේත්ර දෙකක් සහ ඉදිරිපත් කිරීමේ බොත්තමක් පමණි.
අවශ්ය දේ මතක තබා ගන්න: ජාවාස්ක්රිප්ට් වෙතින් එය කිසිදු පරීක්ෂාවකින් තොරව ඉදිරිපත් කළ හැකිය. කෙසේ වෙතත්, පරිශීලකයා එවැනි බොත්තමක් එබුවහොත්, වලංගු කිරීම සිදු කළ යුතු අතර, ආකෘති පත්රය යවනු ලබන්නේ වලංගු භාවය සමත් වුවහොත් පමණි.
සාමාන්යයෙන් සියල්ල ආරම්භ වන්නේ මේ අසල ඇති දෙයකින් ය (මම වැදගත් නොවන සියලුම අමතර දේවල් ඉවත් කළෙමි):
<form method="post" id="theFormID" name="theFormID" action="">
<input type="text" id="Field1" name="Field1" />
<input type="text" id="Field2" name="Field2" />
<input type="submit" value="Send" onclick="JavaScript:return Validator();" />
</form>
පෝරම ටැගය නොමැති ආකාරය බලන්න onsubmit="..."
(එය නොතිබීම කොන්දේසියක් බව මතක තබා ගන්න).
ගැටළුව වන්නේ ආකෘති පත්රය සෑම විටම ඉදිරිපත් කිරීමයි onclick
වාර්තා true
හෝ false
.
මම වෙනස් නම් type="submit"
සඳහා type="button"
, එය වෙනදා වැඩ වෙන්නේ නැහැ. එය කිසි විටෙකත් පෝරමය යවන්නේ නැත, නමුත් එය පහසුවෙන් කළ හැකිය.
ඉතින් අවසානයේ මම මෙය භාවිතා කළෙමි:
<form method="post" id="theFormID" name="theFormID" action="">
<input type="text" id="Field1" name="Field1" />
<input type="text" id="Field2" name="Field2" />
<input type="button" value="Send" onclick="JavaScript:return Validator();" />
</form>
සහ function Validator
, කොහෙදreturn True;
, මම ජාවාස්ක්රිප්ට් ඉදිරිපත් කිරීමේ වාක්යයක්ද එක් කරමි, මේ හා සමාන දෙයක්:
function Validator(){
// ...bla bla bla... the checks
if( ){
document.getElementById('theFormID').submit();
return(true);
}else{
return(false);
}
}
එම id=""
පමණක් JavaScript සඳහාgetElementById
, මෙම name=""
එය තැපැල් දත්ත මත පෙනී ඒ සඳහා වේ.
ඒ ආකාරයෙන් එය මට අවශ්ය පරිදි ක්රියාත්මක වේ.
මම මෙය තැබුවේ අවශ්ය නොවන පුද්ගලයින් සඳහා පමණි onsubmit
පෝරමයේ ක්රියාකාරීත්වයක් , නමුත් පරිශීලකයා විසින් බොත්තමක් එබූ විට යම් වලංගු භාවයක් ලබා දෙන්න.
පෝරම ටැගය පිළිබඳ මට ඉදිරිපත් කිරීමක් අවශ්ය නොවන්නේ ඇයි? පහසු, වෙනත් ජාවාස්ක්රිප්ට් කොටස් මත මට ඉදිරිපත් කිරීමක් කළ යුතු නමුත් කිසිදු වලංගු භාවයක් අවශ්ය නොවේ.
හේතුව: පරිශීලකයා මට අවශ්ය ඉදිරිපත් කිරීම සිදු කරන්නේ නම් සහ එය වලංගු කිරීම අවශ්ය වේ, නමුත් එය ජාවාස්ක්රිප්ට් නම් සමහර විට මට ඉදිරිපත් කිරීම සිදු කළ යුතු අතර එවැනි වලංගු කිරීම් මග හැරෙනු ඇත.
එය අමුතු දෙයක් ලෙස පෙනෙන්නට පුළුවන, නමුත් උදාහරණයක් ලෙස සිතන විට නොවේ: පිවිසුමක ... සමහර සීමාවන් සහිතව ... PHP සැසි භාවිතා කිරීමට ඉඩ නොදීම සහ කුකීස් සඳහාද අවසර නැත!
එබැවින් ඕනෑම සබැඳියක් එවැනි ආකෘති ඉදිරිපත් කිරීමක් බවට පරිවර්තනය කළ යුතුය, එබැවින් පිවිසුම් දත්ත නැති නොවේ. කිසිදු පිවිසුමක් තවමත් සිදු කර නොමැති විට, එය ද ක්රියාත්මක විය යුතුය. එබැවින් සබැඳි වල කිසිදු වලංගු භාවයක් සිදු නොකළ යුතුය. නමුත් පරිශීලකයා සහ පාස් යන ක්ෂේත්ර දෙකටම පරිශීලකයා ඇතුළු වී නොමැති නම් පරිශීලකයාට පණිවිඩයක් ඉදිරිපත් කිරීමට මට අවශ්යය. එබැවින් එකක් අතුරුදහන් නම්, පෝරමය යැවිය යුතු නැත! ගැටලුව තිබේ.
ගැටළුව බලන්න: එක් ක්ෂේත්රයක් හිස් වූ විට පෝරමය යැවිය යුතු නොවේ, පරිශීලකයා බොත්තමක් එබූ විට පමණක්, එය ජාවාස්ක්රිප්ට් කේතයක් නම් එය යැවිය හැකි විය යුතුය.
මම onsubmit
පෝරම ටැගය මත වැඩ කරන්නේ නම්, එය පරිශීලකයා හෝ වෙනත් ජාවාස්ක්රිප්ට් දැයි දැන ගැනීමට අවශ්ය වේ. කිසිදු පරාමිතියක් සම්මත කළ නොහැකි බැවින් එය කෙලින්ම කළ නොහැකි බැවින් සමහර අය වලංගු භාවයක් කළ යුතුද නැද්ද යන්න පැවසීමට විචල්යයක් එක් කරති. වලංගු කිරීමේ ශ්රිතයේ පළමු දෙය නම් එම විචල්ය අගය පරීක්ෂා කිරීම යනාදියයි ... ඉතා සංකීර්ණ වන අතර කේතයෙන් සැබවින්ම අවශ්ය දේ නොකියයි.
එබැවින් විසඳුම වන්නේ පෝරම ටැගය මත ඉදිරිපත් නොකිරීමයි. ඉන්සෙඩ් එය සැබවින්ම අවශ්ය තැන බොත්තම මත තබන්න.
අනෙක් පැත්තෙන්, සංකල්පමය වශයෙන් මට onsubmit වලංගුකරණය අවශ්ය නොවන බැවින් onsubmit කේතය දමන්නේ ඇයි? මට ඇත්තටම බොත්තම් වලංගුකරණය අවශ්යයි.
කේතය වඩාත් පැහැදිලිව පෙනෙනවා පමණක් නොව, එය තිබිය යුතු තැනයි. මෙය මතක තබා ගන්න: - ජාවාස්ක්රිප්ට් පෝරමය වලංගු කිරීම මට අවශ්ය නැත (එය සැමවිටම සේවාදායක පැත්තේ PHP විසින් කළ යුතුය) - මට අවශ්ය වන්නේ සියලුම ක්ෂේත්ර හිස් නොවිය යුතු බවට පණිවිඩයක් පරිශීලකයාට පෙන්වීමටය, එයට ජාවාස්ක්රිප්ට් (සේවාදායකයා) අවශ්ය වේ. පැත්ත)
ඉතින් සමහර අය (සිතන්න හෝ මට කියන්න) එය කළ යුත්තේ වලංගු වලංගු භාවයක් මතද? නැත, සංකල්පමය වශයෙන් මම සේවාදායකයාගේ පැත්තෙන් වලංගු කිරීමක් සිදු නොකරමි. මම කරන්නේ බොත්තමක් එබීමෙන් යමක් කිරීම පමණි, එබැවින් එය ක්රියාත්මක කිරීමට ඉඩ නොදෙන්නේ ඇයි?
එම කේතය සහ ශෛලිය උපක්රමය මනාව ඉටු කරයි. ඕනෑම ජාවාස්ක්රිප්ට් එකක මා තැබූ පෝරමය යැවීමට අවශ්යයි:
document.getElementById('theFormID').action='./GoToThisPage.php'; // Where to go
document.getElementById('theFormID').submit(); // Send POST data and go there
මට එය අවශ්ය නොවන විට එය වලංගු කිරීම මඟ හැරේ. එය පෝරමය යවා වෙනත් පිටුවක් පූරණය කරයි.
නමුත් පරිශීලකයා ඉදිරිපත් කිරීමේ බොත්තම ක්ලික් කළහොත් (අකා type="button"
නොවේ type="submit"
) ආකෘති පත්රය ඉදිරිපත් කිරීමට පෙර වලංගු කිරීම සිදු කරනු ලබන අතර වලංගු නොවේ නම් එවනු නොලැබේ.
දිගු හා සංකීර්ණ කේත උත්සාහ නොකිරීමට මෙය අන් අයට උපකාරී වේ යැයි සිතමු. onsubmit
අවශ්ය නොවේ නම් භාවිතා නොකරන්න onclick
. නමුත් වෙනස් type="submit"
කිරීමට මතක තබා ගන්න type="button"
, කරුණාකර submit()
ජාවාස්ක්රිප්ට් මඟින් එය කිරීමට අමතක නොකරන්න .