2013-09-12 4 views
0

Эта функция получает две части данных от конечного пользователя через HTML-форму «#from» и «#to». Я бы хотел, чтобы они поступали из заданных переменных вместо ввода пользователем (т. Е. # Direction-form '). Как мне это сделать?Установка переменных вместо ввода пользователем

$('#directions-form').submit(function(e) { 
    $('#error').hide(); 
    ds.route({ 
    origin: $('#from').val(), 
    destination: $('#to').val(), 
    travelMode: $('#mode').val() 
    }, function(result, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 
     fitBounds = true; 
     dr.setDirections(result); 
    } 
    else { 
     $('#error').text(status).show(); 
    } 
    recalcHeight(); 
    }); 
    e.preventDefault(); 
    return false; 
}); 
+1

Пожалуйста, перефразируйте, так как ваш текущий вопрос не ясен. –

+0

Я просто перефразировал, это имеет смысл? – SMPLGRP

ответ

1

Все, что вам нужно сделать, это заменить значения с переменными. Например, это может выглядеть так:

origin: myOrigin, 
destination: myDestination, 

В коде нет ничего особенного, как в настоящее время стоит. Все это делает:

$('#from').val() 

является динамически подгружать значение из входного элемента на форму, которая называется from. Это оценивает значение, точно так же, как это делает переменная, оно просто не сохраняет это значение в переменной, а вместо этого извлекает его непосредственно из HTML. Вы можете напрямую заменить его переменной.

Update: В вашем Pastebin в комментариях ниже это выглядит как вы вызываете функцию неправильно здесь:

ds.route(from,to,mode); 

Эта функция принимает два параметра, первый из которых представляет собой объект, состоящий из три значения, которые вы пытаетесь передать, а вторая - функция обратного вызова. Что-то вроде этого:

ds.route({ 
    origin: from, 
    destination: to, 
    travelMode: mode 
}, function(result, status) { 
    // Here you can respond to the results in some way 
}); 
+0

. Я сделал это как советовал, но функция по-прежнему зависит от ('# direction-form'). Submit, он не принимает две переменные, которые я определил, и используя эти , Есть идеи? – SMPLGRP

+1

@benknighthorse: Ну, вы не спрашивали о форме submit. В настоящее время вся функция ('ds.route()') устанавливается, когда форма отправляется. Если вы хотите выполнить его на каком-то другом событии или в какой-то другой момент в коде, просто вызовите функцию 'ds.route()', где вам нужно ее вызвать. – David

+0

есть способ, которым я могу связать весь код, чтобы каждый мог лучше понять, чем я занимаюсь? – SMPLGRP

1

Следующая удалим связь между элементом пользовательского интерфейса и функции обратного вызова

var to = $('#to').val();// or some arbitrary other source that contains the value you want to assign 
var from = $('#from').val(); 
$('#directions-form').submit(function(e) { 
    $('#error').hide(); 
    ds.route({ 
    origin: from, 
    destination: to, 
    travelMode: $('#mode').val() 
    }, function(result, status) { 
    if (status == google.maps.DirectionsStatus.OK) { 
     fitBounds = true; 
     dr.setDirections(result); 
    } 
    else { 
     $('#error').text(status).show(); 
    } 
    recalcHeight(); 
    }); 
    e.preventDefault(); 
    return false; 
}); 
+0

, тогда я могу установить var to = lat | long и var from = lat | long, и это должно решить мой вопрос? – SMPLGRP

+0

Вы можете применить любую логику, которую вы хотите, при назначении этих двух переменных. Конечный результат будет присвоен начальному и целевому назначению. – TGH

Смежные вопросы