我正在努力解决以下问题:我在提交之前已经进行了大量验证,并且已将其放入单独的文件中,因此页面加载速度更快。现在,单击提交按钮,我希望此验证文件加载并验证所有内容
问题是,为了使带有验证的外部js文件工作,我需要看到该文件中的变量,并且每次我在输入中写入内容时都会更改(我有输入,如果我将其留空并按提交我需要验证检测它(它确实如此),但如果在此之后我在输入中写了一些内容 - 我需要'name'变量动态更改,以便在加载的js文件验证中可以正常工作)。
为此,我需要在每次按下提交按钮后生成所有变量,以便动态加载文件(如果按下提交按钮,则加载验证)以访问所需的变量(检测输入是否是我需要将变量写在范围之外 - 这样它们是全局的并且可以被加载的js文件访问。如果我在<script>
标记之后立即声明变量,那么每次按下提交按钮时它们都不会动态更改。 (但至少加载了带验证的js文件可以看到它们)
HTML:
<form action="videator-c.php" method="post" enctype="multipart/form-data" id='save_img'>
<input type='text' class='name_video_inp' style="text-align: center;flex: auto;" maxlength="80" style='flex:auto' name='video_name' placeholder="*Name your video here" />
<input type='submit' value='Finish uploading video' name='submit-b'/>
JS:
<script type="text/javascript">var name = $.trim($(".name_video_inp").val());
$(document).ready(function(){
$('#save_img').on('submit',function(){ var name = $.trim($(".name_video_inp").val());
$.getScript("script/videator-b_validate.js").done(function(script, textStatus) {
console.log( textStatus );
})
.fail(function(jqxhr, settings, exception) {
console.log( 'error' );
});
return false;
})
(我在范围和范围之外都声明了名称变量 - 如果超出范围 - 它会看到变量,但即使我在输入中写入内容并再次按下提交,它也总是空的,如果在范围内 - 名称变量也相应地更改输入值,但在外部文件中看不到。我需要两个:在外部JS文件中看到名称变量,如果我在输入中写出某些内容并且再次提交新内容,则会发生变化。
和EXTERNAL JS:
console.log(name);
如果我尝试动态更新名称变量,每次输入更改都会在函数范围内声明,外部js文件将无法看到它:
$(".name_video_inp").change(function(){var name = $.trim($(".name_video_inp").val()); console.log(name);})
这是完美运行的工作js,因为我没有动态加载文件,但它已经包含在那里(但它太长了):
$('#save_img').submit(function(){
var lang_u = $('#lang_u option:selected').val();
var lev_u = $('#lev_u option:selected').val();
if(!$.trim($(".name_video_inp").val())){
$('.hint').fadeIn();
$('.hint').html('Please, name the video.')
$('.hint').css('background','#fbf3b4');
setTimeout(function() {$('.hint').fadeOut('fast');}, 3000);
console.log('empty name');
return false;}
if($('.input_img').val() == '')
{
$('.hint').fadeIn();
$('.hint').html('Please, generate a thumbnail to the video by playing video at the desired position.')
$('.hint').css('background','#8ced64');
setTimeout(function() {$('.hint').fadeOut('fast');}, 3000);
return false;
}
if (!$.trim($(".des").val())){
$('.hint').fadeIn();
$('.hint').html('Please, provide some description.')
$('.hint').css('background','#ccfbb4');
setTimeout(function() {$('.hint').fadeOut('fast');}, 3000);
console.log('empty des');return false;}
if(lang_u == 'Language' || lev_u == 'Level')
{
$('.hint').fadeIn();
$('.hint').html('Please, select the Language and the Level.');
setTimeout(function() {$('.hint').fadeOut('fast');}, 3000);
return false;
}
})
所以总的来说,我努力包括按下按钮上的外部文件并使其正常工作 - 这样所有变量都可以“工作”,就像它在js文件中而不是外部一样。
到目前为止,我能看到的唯一解决方案是每次按下提交后都声明名称变量:
$('#save_img').on('submit',function(){ var name = $.trim($(".name_video_inp").val());
然后有些人如何让它全球化?