将 jquery inputmask 与烧瓶一起使用
Using jquery inputmask with flask
我正在升级我的数学系的内部网页以使用 Python3 和 Flask 框架。我目前正在处理的页面使用输入屏蔽来强制执行特定的日期格式(除其他外):
With the "Date Given" box selected, the input masking appears
处理此页面的代码的基本布局是
def manage_exams():
kwargs['content']=Markup(gl.get_html_to_list_all_exams())
if form_name in ["add","edit"]:
html=gl.get_html_for_exam_add_edit_pages(form_name, exam_id, course_id)
return html
return render_template("manage_exams.html", **kwargs)
随附javascript的相关部分是
$(document).ready(function() {
$(".date").mask("99-99-9999");
$("#weight").mask("9.9?9?9");
});
function manage_exam_AJAX(form_name, exam_id, course_id){
var data = {form_name: form_name,
exam_id: exam_id,
course_id: course_id};
$.ajax({
type: 'post',
dataType: 'html',
url: 'manage_exams',
async: false,
data: data,
success: function (response, status, xml) {
if(response.error)
{
alert(response.data);
}
else
{
$("#main_content").html(response);
}
},
error: function(response, status, xml) {
alert(JSON.stringify(response));
}
});
}
我发现如果我重新渲染模板,输入掩码会按预期工作:
def manage_exams():
kwargs['content']=Markup(gl.get_html_to_list_all_exams())
if form_name in ["add","edit"]:
kwargs['content']=Markup(gl.get_html_for_exam_add_edit_pages(form_name, exam_id, course_id))
return render_template("manage_exams.html", **kwargs)
使用第二种方法,我将不得不 tweak/eliminate 我的 javascript 因为现在页面加载到自身内部,但我应该怎么做呢?无论如何我可以 return html 变量 和 使用 jquery?
编辑:
根据 @8oh8 的解决方案,我现在在 javascript 的成功部分调用掩码函数。这现在适用于我 returning 我的 'html' 变量而不是生成新请求的原始方法:
$(document).ready(function() {
mask_functions();
});
function mask_functions(){
$(".date").mask("99-99-9999");
$("#weight").mask("9.9?9?9");
};
function manage_exam_AJAX(form_name, exam_id, course_id){
var data = {form_name: form_name,
exam_id: exam_id,
course_id: course_id};
$.ajax({
type: 'post',
dataType: 'html',
url: 'manage_exams',
async: false,
data: data,
success: function (response, status, xml) {
if(response.error)
{
alert(response.data);
}
else
{
$("#main_content").html(response);
mask_functions();
}
},
error: function(response, status, xml) {
alert(JSON.stringify(response));
}
});
}
我不太确定 mask() 函数的作用,但我怀疑某些绑定在 HTML 被交换后被破坏。设置新 HTML 后再次尝试调用掩码函数。
我正在升级我的数学系的内部网页以使用 Python3 和 Flask 框架。我目前正在处理的页面使用输入屏蔽来强制执行特定的日期格式(除其他外):
With the "Date Given" box selected, the input masking appears
处理此页面的代码的基本布局是
def manage_exams():
kwargs['content']=Markup(gl.get_html_to_list_all_exams())
if form_name in ["add","edit"]:
html=gl.get_html_for_exam_add_edit_pages(form_name, exam_id, course_id)
return html
return render_template("manage_exams.html", **kwargs)
随附javascript的相关部分是
$(document).ready(function() {
$(".date").mask("99-99-9999");
$("#weight").mask("9.9?9?9");
});
function manage_exam_AJAX(form_name, exam_id, course_id){
var data = {form_name: form_name,
exam_id: exam_id,
course_id: course_id};
$.ajax({
type: 'post',
dataType: 'html',
url: 'manage_exams',
async: false,
data: data,
success: function (response, status, xml) {
if(response.error)
{
alert(response.data);
}
else
{
$("#main_content").html(response);
}
},
error: function(response, status, xml) {
alert(JSON.stringify(response));
}
});
}
我发现如果我重新渲染模板,输入掩码会按预期工作:
def manage_exams():
kwargs['content']=Markup(gl.get_html_to_list_all_exams())
if form_name in ["add","edit"]:
kwargs['content']=Markup(gl.get_html_for_exam_add_edit_pages(form_name, exam_id, course_id))
return render_template("manage_exams.html", **kwargs)
使用第二种方法,我将不得不 tweak/eliminate 我的 javascript 因为现在页面加载到自身内部,但我应该怎么做呢?无论如何我可以 return html 变量 和 使用 jquery?
编辑: 根据 @8oh8 的解决方案,我现在在 javascript 的成功部分调用掩码函数。这现在适用于我 returning 我的 'html' 变量而不是生成新请求的原始方法:
$(document).ready(function() {
mask_functions();
});
function mask_functions(){
$(".date").mask("99-99-9999");
$("#weight").mask("9.9?9?9");
};
function manage_exam_AJAX(form_name, exam_id, course_id){
var data = {form_name: form_name,
exam_id: exam_id,
course_id: course_id};
$.ajax({
type: 'post',
dataType: 'html',
url: 'manage_exams',
async: false,
data: data,
success: function (response, status, xml) {
if(response.error)
{
alert(response.data);
}
else
{
$("#main_content").html(response);
mask_functions();
}
},
error: function(response, status, xml) {
alert(JSON.stringify(response));
}
});
}
我不太确定 mask() 函数的作用,但我怀疑某些绑定在 HTML 被交换后被破坏。设置新 HTML 后再次尝试调用掩码函数。